Ruby - итерация по разобранному JSON

Я пытаюсь выполнить итерацию анализируемого ответа JSON от reddit API.

Я сделал несколько поисковых запросов и, похоже, у других была эта проблема, но ни одно из решений, похоже, не работает для меня. 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, которая является хешем, а не списком. Вам нужно получить массив children из вашего объекта JSON с помощью 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