我正在尝试迭代来自 reddit 的 API 的已解析 JSON 响应。
我已经进行了一些谷歌搜索,似乎其他人也遇到了这个问题,但似乎没有一个解决方案对我有用。 Ruby 将 ['data]['children] 视为索引,这导致了错误,但我只是想从 JSON 中获取这些值。有什么建议吗?
我的代码:
require "net/http"
require "uri"
require "json"
uri = URI.parse("http://www.reddit.com/user/brain_poop/comments/.json")
response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)
data.each do |child|
print child['data']['body']
end
我在终端中得到的错误信息:
api-reddit-ruby.rb:12:in `[]': no implicit conversion of String into Integer (TypeError)
from api-reddit-ruby.rb:12:in `block in <main>'
from api-reddit-ruby.rb:11:in `each'
from api-reddit-ruby.rb:11:in `<main>'
最佳答案
您正在尝试遍历 data
,这是一个散列,而不是列表。您需要通过 data['data']['children']
require "net/http"
require "uri"
require "json"
uri = URI.parse("http://www.reddit.com/user/brain_poop/comments/.json")
response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)
data['data']['children'].each do |child|
puts child['data']['body']
end
关于Ruby - 迭代解析的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22132623/