在执行 JSON.stringify() 时规避错误将循环结构转换为 JSON?
为了调试,我想使用 JSON.stringify(myobject) 序列化 javascript 对象。但这给出了:
TypeError: Converting circular structure to JSON
有没有办法防止这种情况,例如修剪输出树?
更多背景信息:
我想收集不同对象的一些数据,看看发生了什么,以及为什么某个功能适用于一种情况,但不适用于另一种情况。通过比较输出,我希望能够找到差异,从而解释为什么它在“另一种”情况下不起作用。 我正在使用 jquery,我的调试马称为 chrome。如果有更好的替代方法来进行此类调试活动,我也非常感兴趣!
干杯, 杰罗恩。
For debugging I want to serialize javascript objects with JSON.stringify(myobject). But this gives:
TypeError: Converting circular structure to JSON
Is there a way to prevent this, by for instance pruning the output tree?
Some more background:
I want to collect some data on different objects and see what is going on, and why a feature works for one situation but not for another. By comparing outputs I hope to be able to find differences which explains why it is not working in "another" situation.
I'm using jquery and my debug horse is called chrome. If there are better alternatives for doing this type of debugging activities I'm also very much interested!
Cheers,
jeroen.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
JSON.stringify(obj) 不支持循环引用,例如:
但是 dojox.json.ref 确实支持循环引用。
但是,如果您的目的只是为了调试,我建议使用内置的浏览器调试器,例如 Chrome、IE 或 Firebug(对于 Firefox)。
JSON.stringify(obj) does not support circular referencing such as:
However dojox.json.ref does support circular referencing, if you wanted to explore another option.
However if your purposes are strictly to debug, I'd suggest using the built in browser debugger such as Chrome's, IE's or Firebug(for firefox).
您可以使用 console.log() 和 chrome javascript 调试控制台,它会很高兴地让您检查您的对象,即使它具有循环引用。
You can use console.log() and the chrome javascript debug console, which will happily let you inspect your object even if it has cyclic references.
对于node.js json-ref 是建议的 dojox.json.ref 函数的一个很好的轻量级替代品作者:迈克·刘易斯。
For node.js json-ref is a nice lightweight alternative to the dojox.json.ref function suggested by Mike Lewis.
您现在可以使用 Douglas Crockford 的 JSON Stringify 插件:
https://github.com/douglascrockford/JSON-js
下载文件
cycle.js
中有一个 decycle 选项。您还可以使用console.log()
并在浏览器控制台中检查 JSON。You can now use Douglas Crockford's JSON Stringify plugin:
https://github.com/douglascrockford/JSON-js
This has a decycle option in the download file
cycle.js
. You could also useconsole.log()
and inspect the JSON in your browsers console.