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