Ruby - iterate over parsed JSON
44,109
You're trying to iterate over data
, which is a hash, not a list. You need to get the children array from your JSON object by 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
Related videos on Youtube
Author by
mcnollster
Updated on March 03, 2020Comments
-
mcnollster about 4 years
I'm trying to iterate of a parsed JSON response from reddit's API.
I've done some googling and seems others have had this issue but none of the solutions seem to work for me. Ruby is treating ['data]['children] as indexes and that's causing the error but I'm just trying to grab these values from the JSON. Any advice?
My 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
The error message I get in 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>'
-
mcnollster about 10 yearsAh ha, this makes sense and now it works. Thank you.