规避错误在执行JSON.stringify()时将循环结构转换为JSON?

时间:2011-03-23 18:54:31

标签: javascript json serialization

对于调试,我想用JSON.stringify(myobject)序列化javascript对象。但这给了:

TypeError: Converting circular structure to JSON

有没有办法防止这种情况,例如修剪输出树?

更多背景资料:

我想收集关于不同对象的一些数据,看看发生了什么,以及为什么某个功能适用于一种情况但不适用于另一种情况。通过比较输出,我希望能够找到差异,这解释了为什么它不在“另一种”情况下工作。 我正在使用jquery,我的调试马叫做chrome。如果有更好的替代方法来进行这种类型的调试活动,我也非常感兴趣!

干杯, 的Jeroen。

4 个答案:

答案 0 :(得分:9)

JSON.stringify(obj)不支持循环引用,例如:

var car = {}
car.myself = car;
JSON.stringify(car);

但是,dojox.json.ref确实支持循环引用,如果您想探索其他选项。

但是,如果你的目的是严格调试,我建议使用内置的浏览器调试器,如Chrome,IE或Firebug(对于Firefox)。

答案 1 :(得分:7)

您可以使用console.log()和chrome javascript调试控制台,即使它具有循环引用,也可以让您检查对象。

答案 2 :(得分:2)

对于node.js json-ref是Mike Lewis提出的dojox.json.ref函数的一个很好的轻量级替代方法。

答案 3 :(得分:2)

您现在可以使用Douglas Crockford的JSON Stringify插件:

https://github.com/douglascrockford/JSON-js

这在下载文件cycle.js中有一个decycle选项。您还可以使用console.log()并在浏览器控制台中检查JSON。