对于调试,我想用JSON.stringify(myobject)序列化javascript对象。但这给了:
TypeError: Converting circular structure to JSON
有没有办法防止这种情况,例如修剪输出树?
更多背景资料:
我想收集关于不同对象的一些数据,看看发生了什么,以及为什么某个功能适用于一种情况但不适用于另一种情况。通过比较输出,我希望能够找到差异,这解释了为什么它不在“另一种”情况下工作。 我正在使用jquery,我的调试马叫做chrome。如果有更好的替代方法来进行这种类型的调试活动,我也非常感兴趣!
干杯, 的Jeroen。
答案 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。