Ruby - 遍历解析的 JSON

Posted

技术标签:

【中文标题】Ruby - 遍历解析的 JSON【英文标题】:Ruby - iterate over parsed JSON 【发布时间】:2014-04-03 15:59:45 【问题描述】:

我正在尝试从 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】:

您正在尝试迭代 data,这是一个哈希,而不是一个列表。您需要通过data['data']['children'] 从您的 JSON 对象中获取 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的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 转换为 Ruby 哈希

C# JToken类,实现解析动态json数据遍历查找

无法使用Circe JSON解析器创建遍历JSON字符串的对象

PHP传递通过AJAX传递JSON对象数组到前台,前台解析,遍历JSON

遍历win10文件夹并解析json文件,按照json格式存入mongo数据库(基于python 3.6)

python中如何遍历json数组