我正在尝试遍历 JSON 解析的哈希表(具有嵌套的哈希数组)并插入到 Text Table 中。我试图迭代的 JSON 解析代码是:
{"server"=>{"security_groups"=>[{"name"=>"default"}], "adminPass"=>"LhXEPMkYmqF7", "id"=>"82b7e32b-f62b-4106-b499-e0046250229f", "links"=>[{"href"=>"http://10.30.1.49:8774/v2/89fc0b9d984d49fba5328766e923958f/servers/82b7e32b-f62b-4106-b499-e0046250229f", "rel"=>"self"}, {"href"=>"http://10.30.1.49:8774/89fc0b9d984d49fba5328766e923958f/servers/82b7e32b-f62b-4106-b499-e0046250229f", "rel"=>"bookmark"}], "OS-DCF:diskConfig"=>"MANUAL"}}
我用来迭代顶部的代码是:
server_table = Text::Table.new do | t |
t.head = ['Server ID', 'Server URL', 'Admin Password']
end
response = JSON.parse(r)
response['server'].each do | serv_info |
server_table.rows << [["#{serv_info['id']}", "#{serv_info['links'][0]['href']}", "#{serv_info['adminPass']}"]]
end
puts server_table
我收到错误消息:
/lib/get_token.rb:166:in `[]': can't convert String into Integer (TypeError)
from ./lib/get_token.rb:166:in `create_server'
from ./lib/get_token.rb:165:in `each'
from ./lib/get_token.rb:165:in `create_server'
如果我单独使用 puts 打印出每个命令,它们可以正常工作,但迭代不会。提取正确信息的命令是:
puts response['server']['links'][0]['href']
puts response['server']['id']
puts response['server']['adminPass']
所有这三个工作,但如果我尝试迭代它们,我会得到字符串错误。我知道它与 .each 返回一个哈希数组有关,但我不完全理解为什么 PUTS 命令在脚本和 IRB 中都没有问题。
有什么想法吗?