2014-03-02 5 views
15

Ich versuche, eine geparste JSON-Antwort von reddit API zu iterieren.Ruby - über geparste JSON iterieren

Ich habe etwas googeln und scheint, dass andere dieses Problem hatten, aber keine der Lösungen scheint für mich zu arbeiten. Ruby behandelt ['data] [' children '] als Indizes und das verursacht den Fehler, aber ich versuche nur, diese Werte aus dem JSON zu holen. Irgendein Rat?

Mein 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 

Die Fehlermeldung, die ich im Terminal erhalten:

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

Antwort

22

Sie versuchen, über data laufen, was ein Hash ist, keine Liste. Sie müssen die Kinder-Array von Ihrem JSON-Objekt durch data['data']['children']

+0

bekommen. Ah ha, das macht Sinn und jetzt funktioniert es. Vielen Dank. – 2bor02b