0

私が解析しているJSONオブジェクトはhttp://api.4chan.org/3/catalog.jsonにあります

これが私のRubyコードです:

['open-uri','nokogiri','json'].each{|g| require g}

json_test = File.open('json_test.JSON','r').read
board_cat_body = Nokogiri::HTML(open('http://api.4chan.org/3/catalog.json'))

puts JSON.parse(board_cat_body)

結果(非常に長いので、その一部を取り出しました):

C:/Ruby193/lib/ruby/1.9.1/json/common.rb:148:in `parse': 387: unexpected token at '{"no":248019,"sticky":1,"closed":1,"now":"12\/19....

ただし、 http://api.4chan.org/3/catalog.jsonの内容をコピーしてローカルJSONファイルに貼り付け、そのローカルJSONファイルから解析しても問題ありません。

誰かが私が間違っていることを知っていますか?

4

2 に答える 2

1

のこぎりの呼び出しを削除します。JSONはHTMLではありません。

['open-uri','json'].each{|g| require g}
json = JSON.parse(open('http://api.4chan.org/3/catalog.json').read)
puts json.inspect
于 2013-01-29T21:16:44.567 に答える
1

取得するboard_cat_bodyドキュメントはJSONドキュメントではなく、印刷するとわかるようにHTMLです。したがって、この方法でドキュメントをダウンロードすることを提案します。

require 'net/http'
require 'json'

url = URI.parse('http://api.4chan.org/3/catalog.json')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) { |http| http.request(req) }

そしてそれを解析します:

puts JSON.parse(res.body)
于 2013-01-29T21:17:56.433 に答える