1

Json ファイルからすべての reddit ユーザー名を取得する Ruby プログラムを作成しようとしています。リストを表示させることはできますが、毎回最初のユーザー名の後にエラーがあります。

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 methodnil:NilClass (NoMethodError) の []'内

私がこれを解決できることを知っている人はいますか?

4

1 に答える 1

2

私の推測では、それは 1 つのエラーでオフになっているということです。

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.each do |comment|
  puts comment["data"]["author"]
end
于 2012-04-21T08:17:14.113 に答える