将圆形结构转换为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);