Ruby-在解析的JSON上迭代

Ruby-在解析的JSON上迭代,ruby,json,api,reddit,Ruby,Json,Api,Reddit,我正在尝试迭代来自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/.j

我正在尝试迭代来自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>'
api reddit ruby.rb:12:in`[]:没有将字符串隐式转换为整数(TypeError)
来自api reddit ruby.rb:12:in'block in'
来自api reddit ruby.rb:11:in'each'
来自api reddit ruby.rb:11:in`'

您试图迭代
数据
,这是一个散列,而不是列表。您需要通过
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

啊哈,这是有道理的,现在它起作用了。非常感谢。