web-dev-qa-db-ja.com

Ruby-解析されたJSONを反復処理する

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

リストではなくハッシュであるdataを反復処理しようとしています。 data['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['data']['children'].each do |child|
    puts child['data']['body']
end
33
Mia Clarke