Ruby - 迭代解析后的JSON

27

我正在尝试迭代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>'
1个回答

44

您正在尝试迭代遍历哈希表 data,而不是列表。您需要通过data['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['data']['children'].each do |child|
    puts child['data']['body']
end

1
啊哈,现在我明白了,它可以工作了。谢谢你。 - mcnollster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接