2011-08-10 6 views
35

私はChromeのオブジェクトをストリング化しようとしていますが、(私が知る限り)このような構造は存在しませんが、「JSONへの循環構造の変換」メッセージが表示され続けます。循環構造をJSONに変換する - どのフィールドでそれが不平を言うのかを見つける方法はありますか?

私はコードを12回以上読んできました。循環参照はまったく見つかりませんでした。この痛いほど役に立たないエラーメッセージを超えて、何が悪いのかをChromeに教えてもらう方法はありますか?

+2

私はあなたがどこのNode.jsでこのエラーを取得する場合に役立つことがあり回答を掲載しました循環参照を避けることはできません。 http://stackoverflow.com/questions/4816099/chrome-sendrequest-error-typeerror-converting-circular-structure-to-json/9653082#9653082 –

答えて

31

もしこれがあまりにも明白なら、執筆の時点で、私はあなたが試したことを知りません。

JSON.stringifyコール

前にこの行を挿入し、コンソールログ(シフト制御Jに見て、あなたがJSON.stringify()

に渡しているオブジェクトと「オブジェクト」に置き換える

console.log(the object); 

を挿入)を使用します。コンソールログには、オブジェクトをクリックしてフィールドに展開することができる ">"記号が付いています。

これは、オブジェクトのこの種のように、自分自身へのポインタを持つオブジェクト文句を言っている:

A = []; 
A[0] = A; 
JSON.stringify(A); // circular error 
+1

私はこの問題を抱えていて、コンソールに入力することでそれを把握できませんでした。 JSON.stringify(all)の直前に 'console.log(all)'を置いたところ、 'all'変数が実際にGoogle Chromeで使用されていました!私は私のコードがそれを上書きするだろうと思うが、 'all'はページ上の全てのHTMLを含んでいるので、ページがロードされた後にのみ!先端に感謝します。 – styfle

+0

それは奇妙に聞こえる。私はすべてクロムをチェックして、それは期待通りにundefです – Paul

+1

おそらくバグでしたか? Windows XP上でChrome 12.0.742.122 mで一貫して起こっていました。変数を 'all'から' allData'に変更しました。 – styfle

2

あなたは循環参照を見つけるためにdojox.json.refを使用することができます。このコードは、あなたのobjectWithCircularReferencesの版画JSON表記:コンソールへの出力で

require(["dojox/json/ref"], function(){ 
    console.log(dojox.json.ref.toJson(objectWithCircularReferences)); 
}); 

「$ REF」のサブストリングの任意の出現は、あなたが循環参照を見つけやすくなります。

require(["dojox/json/ref"], function(){ 
    window.ZZZ = dojox.json.ref.toJson(objectWithCircularReferences); 
}); 

そしてもちろん、あなたが事前に道場ライブラリを含める必要があります:あなたは、このようなグローバル変数ZZZに代わり、パイプ、このJSON出力を必要に応じてすることができます。放火犯コンソールで

<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js"></script> 

:クロームコンソールで

include("//yandex.st/dojo/1.9.1/dojo/dojo.js") 

:HTMLファイル内

SCRIPT = document.createElement('script'); 
SCRIPT.src = '//yandex.st/dojo/1.9.1/dojo/dojo.js'; 
document.body.appendChild(SCRIPT); 
+0

あなたのコードでko.toJSとは何ですか?私はdojox.json.ref.toJson(saveObj)を試みましたが、私はまだUncaughtを取得しました。TypeError:循環構造をJSONに変換する – max4ever

+0

@max4ever: 'ko.toJS'は[KnockOut.js library](http://knockoutjs.com/ documentation/json-data.html)を参照してください。しかしここでそれは余分です。私はコードをきれいにしました。ありがとうございました。 – user2683246

関連する問題