我正在试着使(...)Chrome中的一个对象,我一直收到"Converting Chrome to JSON“消息,尽管(据我所知)不存在这样的结构。
我已经把代码看了十几遍了,怎么也找不到任何循环引用。除了这个令人痛苦的无用的错误消息之外,有没有办法让Chrome告诉我它在抱怨什么?
发布于 2011-08-10 10:29:11
如果这太明显了,请原谅。在我写这篇文章的时候,我不知道你已经尝试了什么。
插入
console.log(the object); 将'the object‘替换为要传递给JSON.stringify()的对象
在JSON.stringify调用之前插入此行
并在控制台日志(换档控制J)中查找该对象。在控制台日志中,该对象将被标记为">“符号,可以单击该符号以展开到字段。
它抱怨一个对象有指向它自己的指针,就像这样的对象:
A = [];
A[0] = A;
JSON.stringify(A); // circular error发布于 2013-10-24 00:38:54
您可以使用dojox.json.ref查找循环引用。这段代码打印objectWithCircularReferences的json表示
require(["dojox/json/ref"], function(){
console.log(dojox.json.ref.toJson(objectWithCircularReferences));
});在控制台的输出中出现任何"$ref“子串都将帮助您定位循环引用。如果您愿意,也可以将此json输出通过管道传递给全局变量ZZZ:
require(["dojox/json/ref"], function(){
window.ZZZ = dojox.json.ref.toJson(objectWithCircularReferences);
});当然,您需要预先包含dojo库。在html文件中:
<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js"></script>在firebug控制台中:
include("//yandex.st/dojo/1.9.1/dojo/dojo.js")在Chrome控制台中:
SCRIPT = document.createElement('script');
SCRIPT.src = '//yandex.st/dojo/1.9.1/dojo/dojo.js';
document.body.appendChild(SCRIPT);https://stackoverflow.com/questions/7005205
复制相似问题