1
page = HTTParty.get("https://api.4chan.org/b/0.json").body
threads = JSON.parse(page)
count = 0

unless threads.nil?
    threads['threads'].each do
      count = count + 1
    end
end


if count > 0
    say "You have #{count} new threads."
     unless threads['posts'].nil?
      threads['posts'].each do |x|
        say x['com']
      end
     end
end

if count == 0
    say "You have no new threads."
end

出于某种原因,它说帖子是空的,但我猜线程从来不是....我不确定出了什么问题,它在 facebook 插件上为我做同样的事情,但昨天有效,现在什么都没有。难道我做错了什么?

4

1 回答 1

1

您需要threads像这样初始化变量:

threads = JSON.parse(page)['threads']

您收到的 JSON 响应中的根节点是“线程”。您要访问的所有内容都包含在此节点的数组中。

每个thread包含许多posts. 因此,要遍历所有帖子,您需要执行以下操作:

threads.each do |thread|
  thread["posts"].each do |post|
    puts post["com"]
  end
end

总的来说,我会像这样重写你的代码:

require 'httparty'
require 'json'

page = HTTParty.get("https://api.4chan.org/b/0.json").body
threads = JSON.parse(page)["threads"]
count = threads.count

if count > 0
  puts "You have #{count} new threads."
  threads.each do |thread|
    unless thread["posts"].nil?
      thread["posts"].each do |post|
        puts post["com"]
      end
    end
  end
else
  puts "You have no new threads."
end
于 2013-06-03T04:48:10.767 回答