将圆形结构转换为JSON – 任何方法来find它抱怨什么字段?

我试图在Chrome中对一个对象进行string化(…),尽pipe事实上(据我所知)没有这样的结构存在,但我总是得到一个“将循环结构转换成JSON”的消息。

我已经完成了十几次代码,无法find任何循环引用。 有没有什么办法让Chrome告诉我除了这个痛苦无用的错误信息之外还有什么讽刺呢?

如果这太明显,请原谅我。 在撰写本文时,我不知道你已经尝试了什么。

console.log(the object); 

用传递给JSON.stringify()的对象replace“对象”

JSON.stringify调用之前插入此行

并查看控制台日志(移动控制J)的对象。 在控制台日志中,对象将被标记为“>”符号,可以单击该符号以展开到字段。

它抱怨一个有自己指针的对象,像这样的对象:

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

您可以使用dojox.json.ref来查找循环引用。 这段代码打印你的objectWithCircularReferences json表示:

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

输出到控制台的任何“$ ref”子string都将帮助您find循环引用。 如果你愿意的话,你可以把这个json输出结果像这样pipe理到全局variablesZZZ:

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

当然,你需要预先包含道场图书馆。 在一个html文件中:

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

在萤火虫控制台中:

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

在Chrome控制台中:

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