1

次のコードがあります。

require 'rubygems'
require 'httparty'
require 'pp'
require 'json'

class Search
  include HTTParty
  format :json
end


x = Search.get('https://www.googleapis.com/customsearch/v1key=AI...&cx=013...=flowers&alt=json')
x = x.to_s

result = JSON.parse(x)

そして、戻ってきたGoogle検索結果でそれを実行するたびに、次の結果が得られます。

FlowerPlaces.com Delivers Fresh <b>Flowers</b> To Your Place! <br>  
Order <b>Flowers</b> Online or Call 800-411-9049 for Same Day <b>Flower</b> 
Delivery.", "cacheId"=>"v94CIDza4gQJ"}]}' (JSON::ParserError)
from /usr/local/lib/ruby/1.9.1/json/common.rb:148:in `parse'
from gg.rb:15:in `<main>'

JSON が解析しようとしている文字列バージョンの同じ行を次に示します。

Order <b>Flowers</b> Online or Call 800-411-9049 for Same Day <b>Flower</b> 
Delivery.\", \"cacheId\"=>\"v94CIDza4gQJ\"}]}"

今、私は複数の検索クワイアで試してみましたが、何か間違ったことをしているのだろうか? .to_s に追加したのは、json パーサーが HTTParty get ステートメントを文字列に変換しようとして変換できず、エラーがスローされるためです。JSON パーサーは、エラーをスローする前に、文字列の最後 (Google から返されたすべてのもの) まで取得しているように見えます。

私は何が欠けていますか?

4

1 に答える 1

1

次のように、x = Search.get('http:// ....')の最後に.bodyを追加する必要があります。

x = Search.get('http://....').body
于 2011-11-17T23:22:57.893 に答える