JSONで解析されたハッシュテーブル(ハッシュの配列がネストされている)を反復処理して、テキストテーブルに挿入しようとしています。反復しようとしている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']
これらの3つはすべて機能しますが、それらを繰り返し処理しようとすると、文字列エラーが発生します。.eachがハッシュの配列を返すことと関係があることは知っていますが、スクリプトとIRBでPUTSコマンドが問題なく機能している理由を完全には理解していません。
何かご意見は?