JSON.stringify出现 Converting circular structure to JSON
Posted 未月廿三
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON.stringify出现 Converting circular structure to JSON相关的知识,希望对你有一定的参考价值。
JSON.stringify大家已经不陌生了,是一个将json对象转换为字符串的方法。但是如果你在浏览器控制台中输出 JSON.stringify(window). 如果期望输出一段文字, 可能会失望了. 事实上, 会输出结果如下:
VM211:1 Uncaught TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at <anonymous>:1:6
上面的错误信息告诉我们, 对象中存在循环引用. 解决思路就是通过自定义stringify方法,设置一个全局缓存变量,stringify的第二个参数如果是function时,他会传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。所以,便有了如下解决方案:
var o = {};
o.o = o;
// 声明cache变量,便于匹配是否有循环引用的情况
var cache = [];
var str = JSON.stringify(o, function(key, value) {
if (typeof value === 'object' && value !== null) {
if (cache.indexOf(value) !== -1) {
// 移除
return;
}
// 收集所有的值
cache.push(value);
}
return value;
});
cache = null; // 清空变量,便于垃圾回收机制回收
如上即可解决json字符串化循环引用的问题。
站在巨人的肩膀上摘苹果:
https://www.oecom.cn/json-stringify-error/
以上是关于JSON.stringify出现 Converting circular structure to JSON的主要内容,如果未能解决你的问题,请参考以下文章
JSON.stringify出现 "Converting circular structure to JSON"
解决JSON.stringify()自动将中文转译成unicode的方法