美文网首页
JSON.stringify()循环引用报错

JSON.stringify()循环引用报错

作者: Dr丶net | 来源:发表于2019-07-10 16:14 被阅读0次
遇到 Uncaught TypeError: Converting circular structure to JSON 错误信息

上面的错误信息告诉我们, 对象中存在循环引用, 解决思路就是通过自定义stringify方法,设置一个全局缓存变量,stringify的第二个参数如果是function时,他会传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。所以,便有了如下解决方案:

let obj = new Object();

// 声明cache变量,便于匹配是否有循环引用的情况
let cache = [];
let str = JSON.stringify(obj, (key, value) => {
    if (typeof value === 'object' && value !== null) {
        if (cache.indexOf(value) !== -1) {
            // 移除
            return;
        }
        // 收集所有的值
        cache.push(value);
    }
    return value;
});
cache = null; // 清空变量,便于垃圾回收机制回收

相关文章

  • JSON.stringify()循环引用报错

    上面的错误信息告诉我们, 对象中存在循环引用, 解决思路就是通过自定义stringify方法,设置一个全局缓存变量...

  • 微信小程序JS报错:Uncaught TypeError: Co

    今天开发微信小程序调用setData时遇到一个JSON.stringify转换一个循环引用结构的报错。 setDa...

  • 数组浅拷贝和深拷贝

    乞丐版深拷贝 JSON.parse(JSON.stringify()) 缺点:无法处理循环引用问题 我发现使用ma...

  • JSON.stringify cycle对象

    对于有循环引用的JS对象,用JSON.stringify会产生typeError。 解决办法:编写一个replac...

  • 4-8 循环引用

    3种循环引用 自循环引用 相互循环引用 多循环引用 Block的循环引用 NSTimer 的循环引用 破除循环引用...

  • js递归实现深拷贝 代码优化(解决循环引用)

    首先回顾一下之前实现的深拷贝的代码: 01.循环引用问题 我们看下面这个例子 这段代码运行将会报错,因为循环引用造...

  • 循环引用的相关问题

    1、循环引用的种类(1)自循环引用(2)相互循环引用(3)多循环引用 如何破除循环引用?(1)避免产生循环引用(2...

  • databinding报错合集

    中文引用报错 中文引用会直接报错; 改为变量引用 引用kotlin的伴生对象报错 [kapt] An except...

  • B51-03-07

    spring mvc 循环引用本机启动不报错本机启动加载的bean不全 stageEnum,对每个级别的方法,执行...

  • 报错:nodejs.TypeError: Converting

    思考: ...currentItem 他是一个浅拷贝,会造成循环引用对象 JavaScript 调试常见报错以及修...

网友评论

      本文标题:JSON.stringify()循环引用报错

      本文链接:https://www.haomeiwen.com/subject/frihkctx.html