0

以下の形式の JSON 文字列を解析しようとしています。

var jsonString = {"body": "{\n \"data\": [\n {\n \"name\": \"{name}\",\n \"id\": \"{id}\"\n },\n {\n \"name\": \"{name}\",\n \"id\": \"{id}\"\n },\n {\n \"name\": \"{name}\",\n \"id\": \"{uid}\"\n },\n {\n \"name\": \"{name}\",\n \"id\": \"{uid}\"\n }\n ],\n \"paging\": {\n \"next\": \"http://graph.facebook.com/{my_uid}/mutualfriends?user={uid_1}&access_token={access_token}&limit=5000&offset=5000&__after_id={last_id}\"\n }\n}"}

jQuery の $.each 関数を使用します。以下のコードを実行すると、期待どおりに解析されます。

$.each(JSON.parse(jsonString).data,function(index,value){
      alert(JSON.stringify(value))
})

コールバック関数の範囲を広げる必要があります。以下のコードを使用してこれを実装しようとすると。

$.each(JSON.parse(jsonString).data,$.proxy(function(index,value){
      alert(JSON.stringify(value))
}),this)

エラーが発生します

Converting circular structure to JSON 

何か助けはありますか?

アップデート:

より具体的には、私が解析しようとしているもののソースは、残りの呼び出しからのものです。JSON.stringify() を応答に適用すると、次のようになります。

            [{"code":200,"headers":[{"name":"Access-Control-Allow-Origin","value":"*"},{"name":"Cache-Control","value":"private, no-cache, no-store, must-revalidate"},{"name":"Connection","value":"close"},{"name":"Content-Type","value":"text/javascript; charset=UTF-8"},{"name":"ETag","value":"\"d81f912b1730cdfd1c180d5851d2d22a8c0774c3\""},{"name":"Expires","value":"Sat, 01 Jan 2000 00:00:00 GMT"},{"name":"Pragma","value":"no-cache"}],"body":"{\n   \"data\": [\n      {\n         \"name\": \"{name}\",\n         \"id\": \"{ID}\"\n      }\n   ],\n   \"paging\": {\n      \"next\": \"{URL}\"\n   }\n}"}]

次に、これを使用して解析しようとしています: $.each(JSON.parse(jsonString).data,$.proxy(function(index,value){ alert(JSON.stringify(value)) }),this)

そしてエラーを取得する

Converting circular structure to JSON 

$.proxy を取得すると動作します

4

1 に答える 1

0

これは、キャッチされていない構文エラーの結果であることが判明しました。それ以外の

$.each(JSON.parse(jsonString).data,$.proxy(function(index,value){ alert(JSON.stringify(value)) }),this)

必要だった:

$.each(JSON.parse(jsonString).data,$.proxy(function(index,value){ alert(JSON.stringify(value)) },this))
于 2013-06-18T19:37:06.500 に答える