为什么在尝试刮取reddit Json文件时会出现此错误?

时间:2012-04-21 08:08:55

标签: ruby json reddit

我正在尝试编写一个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)

有谁知道我能解决这个问题吗?

1 个答案:

答案 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