0

ruby プロジェクトで JSONP データを json 形式で使用しようとしています。

これまでの経験から、どのように対処しましたか?

4

2 に答える 2

1

JSONP は扱いが簡単です。これは単なる JSON のマイナー ラッパーであり、そのラッパーは簡単に取り除くことができます。

require 'open-uri'
require 'json'

URL = 'http://www.google.com/dictionary/json?callback=a&sl=en&tl=en&q=epitome'
jsonp = open(URL).read

jsonpJSONP 形式の結果が含まれるようになりました。

jsonp[0, 3] # => "a({"
jsonp[-11 ... -1] # => "},200,null"

これらの無関係な部分はa{,200,null"データを JSON に渡して解析する際の問題点であるため、それらを取り除きます。

必要なのは、単純で貪欲な正規表現だけです。/{.+}/最も外側の中かっこで囲まれたすべてのものを見つけて返します。これは、JSON が必要とするすべてです。

data = JSON.parse(jsonp[/{.+}/])

data['query'] # => "epitome"
data['primaries'].size # => 1
于 2014-01-03T21:14:32.363 に答える
0

私の経験から、1 つの方法は、この正規表現を使用して関数のコールバック名を除外することです。

/(\{.*\})/m

または怠惰な方法は、 "(" の最初の出現のインデックスを見つけ、最後の文字である ")" でそれを部分文字列にすることです。

ここで答えを探していましたが、確かな答えが得られませんでした。

乾杯

于 2013-03-19T11:24:16.347 に答える