使用 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
处的值,然后循环遍历该数组中的值,并打印出来。
如果有帮助请告诉我!
我正在尝试遍历下面的 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
处的值,然后循环遍历该数组中的值,并打印出来。
如果有帮助请告诉我!