web-dev-qa-db-fra.com

Ruby - itérer sur JSON analysé

J'essaie d'itérer une réponse JSON analysée de l'API de reddit.

J'ai fait quelques recherches sur Google et il semble que d'autres aient eu ce problème, mais aucune des solutions ne semble fonctionner pour moi. Ruby traite ['data] [' children] comme des index et cela cause l'erreur mais j'essaye juste de récupérer ces valeurs du JSON. Un conseil?

Mon code:

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

Le message d'erreur que je reçois dans le terminal:

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>'
20
super_you

Vous essayez d'itérer sur data, qui est un hachage, pas une liste. Vous devez obtenir le tableau enfants de votre objet JSON par 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
33
Mia Clarke