使用 Ruby 遍历 JSON

Iterating through JSON using Ruby

我正在尝试遍历下面的 JSON,但出现错误

./test.rb:39:in `[]': can't convert String into Integer (TypeError)
    from ./test.rb:39:in `block in <main>'
    from ./test.rb:38:in `each'
    from ./test.rb:38:in `<main>'

来自这段代码(第 39 行=print child['data']['body'])

谁能告诉我我做错了什么?

data = JSON.parse(res.body)

38 data.each do |child|
39    print child['data']['body']
40 end

res.body 是这样的:

{ "views": [ "Logs_Messages","Content_Sources","Bitrates_HD_Encoder","Hardware_Status_eCMM","Bitrates_Per_Program","Content_OOB_SI","Debug_Dump","Hardware_Status_In_Band_Tuners","Alarms_Current","Version_Information","Software_Status_License","Hardware_Status_Module_Presence","Reboot","Content_Mappings","Logs_Persistent","Content_Routing","Software_Status_Transcoder_Enabled","Software_Status_Code_Download","Decryption_Identification","Hardware_Status_System_Monitoring","Software_Status_Operating_System_Stats","Software_Status_TLV","Hardware_Status_Out_of_Band_Tuner","Content_EPG","Hardware_Status_HD_Encoders","Alarms_History","Bitrates_Output","Decryption_Status","Bitrates_Input","Software_Status_EPG_Download","Interfaces","Hardware_Status_Output_Module"] }

在您的示例中,第 38 行的 data 应该是 res.body.

的内容

如果我们查看您所说 res.body 的散列,我们可以看到它是一个具有一个键 "views" 的散列,并且该键指向一个值数组。

到目前为止,我不确定您试图用您的脚本实现什么。我会猜测您目前正在尝试打印出数组中的每一项。为此,您需要执行以下操作:

data = JSON.parse(res.body)

data["views"].each do |view|
  print view
end

这将访问数组 data 中存储在键 views 处的值,然后循环遍历该数组中的值,并打印出来。

如果有帮助请告诉我!