我正在尝试编写一个Ruby程序,它将从Json文件中检索所有reddit用户名。我可以让它显示列表,但每次第一个用户名后都有错误。
require 'net/http'
require 'rubygems'
require 'json'
require 'pp'
@response = Net::HTTP.get(URI.parse("http://www.reddit.com/r/AskReddit/comments/sl1nn /could_codeine_help_me_sleep_is_it_dangerous/.json"))
result = JSON.parse(@response)
comments = result[1]['data']['children'] #this is now an array of comment hashes
(0..comments.length).each do |i|
comment = comments[i]['data']
puts comment['author']
end
虽然它显示了列表,但我也收到了这个错误:
block in <main>': undefined method
[]'中的代表nil:NilClass(NoMethodError)
有谁知道我能解决这个问题吗?
答案 0 :(得分:2)
我的猜测是一次错误。
a = [1, 2, 3, 4, 5]
(0..a.length).map { |n| a[n] }
# => [1, 2, 3, 4, 5, nil]
这是因为
(0..5).to_a
# => [0, 1, 2, 3, 4, 5]
要取消包容性,您应该使用...
,即:
(0...comments.length).each do |i|
更好的是,由于comments是一个数组,你可以这样做:
comments.each do |comment|
puts comment["data"]["author"]
end