TypeError: Converting circular structure to JSON

报错:TypeError: Converting circular structure to JSON...如何解决? 直接解决循环引用:在序列化前,使用replacer或手动删除循环引用的属性。使用库:如果需要处理复杂的循环引用,考虑使用flatted或其他库。使用WeakMap进行跟踪:你可以使用WeakMap来避免对象重复序列化。选择哪种方法取决于你的应用需求及对象的复杂性。如果对象结构较简单,手动去除循环引用可能是最直接的解决方案。如果对象结构较复杂或者循环引用不可避免,使用外部库(如flatted)将是更为高效且简洁的解决方式。希望如上措施及解决方案能够帮到有需要的你。 阅读详情

报错:

[Vue warn]: Error in nextTick: "TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'Vue'
    |     property '$options' -> object with constructor 'Object'
    |     property 'router' -> object with constructor 'VueRouter'
    --- property 'app' closes the circle"

解析:

一般报错TypeError: Converting circular structure to JSON是因为存在循环引用,并且使用JSON.stringify方法去转化成字符串。下面举一个简单地例子:

  • 报错代码

    const x = { a: 8 };
    const b = { x };
    b.y = b; // 循环引用
    JSON.stringify(b); // 触发报错
    
  • 解决

    const x = { a: 8 };
    const b = { x };
    b.y = JSON.parse(JSON.stringify(b)); // 隐式深拷贝,主要实现深拷贝,解除循环引用
    JSON.stringify(b);
    

    也可以不使用深拷贝,直接去掉循环引用的代码,问题的关键点是解除循环引用

  • 本博文报错位置不能显式看到循环引用,因为循环引用的代码不是自己写的,而是框架代码自己实现的,因此发现问题的产生地方更难一点。经过大约一下午时间头都快爆炸了,终于看到了黎明曙光。发现产生问题的原因:

    • vuex中的状态管理state中存储了router实例(组件中获取的this.$route),存在循环引用
    • vuex使用了插件vuex-persistedstate

    state中有了循环引用,插件vuex-persistedstate要执行JSON.stringify把state数据转化成字符串然后存储到浏览器本地存储。

    接下来就是解决,那就是解除循环引用,解除办法就是对组件中获取的this.$route进行深拷贝,然后再存储到state。

    /**
     * 获取数据类型
     * @param {All} [o] 需要检测的数据
     * @returns {String}
     */
    export function getType(o){
      return Object.prototype.toString.call(o).slice(8,-1);
    }
    
    /**
     * 判断是否是指定数据类型
     * @param {All} [o] 需要检测的数据
     * @param {String} [type] 数据类型
     * @returns {Boolean}
     */
    export function isKeyType(o, type) {
    	return getType(o).toLowerCase() === type.toLowerCase();
    }
    
    /**
     * 深拷贝,支持常见类型 object Date Array等引用类型
     * @param {Any} sth
     * @return {Any}
     */
    export function deepClone(sth) {
      let copy;
      if (null == sth || "object" != typeof sth) return sth;
      if (isKeyType(sth, 'date')) {
        copy = new Date();
        copy.setTime(sth.getTime());
        return copy;
      }
      if (isKeyType(sth, 'array')) {
        copy = [];
        for (let i = 0, len = sth.length; i < len; i++) {
          copy[i] = deepClone(sth[i]);
        }
        return copy;
      }
      if (isKeyType(sth, 'object')) {
        copy = {};
        for (let attr in sth) {
          if (sth.hasOwnProperty(attr)) copy[attr] = deepClone(sth[attr]);
        }
        return copy;
      }
      return null;
    }
    

    深拷贝源码此项目包含很多前端通用方法。

vue2/3:详解报错TypeError: Converting circular structure to JSON(--> starting at object with constructor) TypeError: Converting circular structure to JSON --> starting at object with constructor,vue2 vue3报错,存在循环引用,vue 路由里关于 TypeError: Converting circular structure to JSON 报错问题,JSON.stringify,JSON.parse,把数组或对象转化成JSON报错,将循环结构转换为JSON,解决Vue报错Converting circular st 阅读详情

相关推荐

vue3 - 报错Uncaught (in promise) TypeError: Converting circular structure to JSON --> starting at obje

vue3,报错,json,element-plus,ant design vue,antd,组件报错,vue报错解决,vue3 Uncaught (in promise) TypeError: Converting circular structure to JSON --> starting at object with constructor ‘Object’ | property ‘vnode’ -> object with constructor ‘Object’— property ‘compon

✅ 精选推荐文章 6846

‘Converting circular structure to JSON‘报错的解决方案

'Converting circular structure to JSON’报错的解决方案 1.业务需求: vue项目使用el-tree组件时需要将树形的某一个node对象存储起来,存储的时候需要使用JSON对象来转换为字符串的形式,此时出现Converting circular structure to JSON报错,JSON转换失败。 2.解决方案: 在网上查找了资料,这个错误其实是因为被JSON转化的对象里的子项存在循环引用,JSON转化时其实也是一个深度拷贝的过程,但是存在循环引用的对象,

cabinx的博客 2万+

Error in nextTick: “TypeError: Converting circular structure to JSON

[Vue warn]: Error in nextTick: "TypeError: Converting circular structure to JSON --> starting at object with constructor 'Vue' | property '$options' -> object with constructor 'Object' | property 'router' -> object with constr...

JackieDYH的博客 3000

解决报错TypeError: Converting circular structure to JSON --> starting at object with constructor

这个错误其实是因为被JSON转化的对象里的子项存在循环引用,JSON转化时其实也是一个深度拷贝的过程,但是。,JSON拷贝转化时会失败,解决方案不止一种,这里讲下我使用的方案。

我驾驶汽车从不是为了从A点到达B点,我喜欢去感受汽车,与之交流,与之融为一体。 1万+

基于大模型的围术期谵妄防控系统研究报告

围术期谵妄是一种急性脑功能障碍综合征,通常发生在手术前后一段时间内。患者会出现意识障碍、注意力不集中、认知功能紊乱、睡眠 - 觉醒周期失调等症状,严重者甚至会出现幻觉、妄想和攻击行为 。这种病症不仅会给患者自身带来极大的痛苦,还会对其术后康复产生严重的负面影响。从患者角度来看,围术期谵妄会显著延长患者的住院时间,增加患者的医疗费用负担。有研究表明,发生谵妄的患者住院时间平均比未发生者延长 2 - 3 天。长时间的住院不仅会影响患者的生活质量,还可能导致患者错过最佳的康复时机,影响身体机能的恢复。同时,谵妄还

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1071

Apollo 9.0 参考线生成器 -- ReferenceLineProvider

在基于参考线的规划算法中,参考线是Planning一切工作的基础和前提,所以搞清楚参考线怎么来的就变得很重要。为此,首先需要了解Planning 与 Routing的交互,通过交互得到路径片段,这些路径片段就告诉我们该怎么走,再在此基础上生成参考线,最后使用不同的平滑算法对参考线进行平滑,得到一条光滑的参考线。

WaiNgai 1664

vue 路由里关于 TypeError: Converting circular structure to JSON 报错问题

首先放上报错内容 TypeError: Converting circular structure to JSON –> starting at object with constructor ‘Object’ — property ‘_renderProxy’ closes the circle (想标红的,但是不会) 然后说下我的报错的位置 我是想在路由里将路由的信息存到vuex里,代码...

sunyv1的博客 3万+

SY6982C 7.4V锂电池1A充电模块原理图设计,已量产

在手持设备、便携工具与小型无人机等场景中,7.4V(2S)锂聚合物电池的应用愈发广泛。这类电池对充电系统的安全性、效率与兼容性提出了明确要求:需支持 USB 5V 输入、1A 安全充电,同时具备多重保护机制。本文将结合一款基于 SY6982C 的充电原理图,深入解析其电路设计与技术亮点。

不脱发的程序猿 360

转化为JSON字符串出现TypeError: Converting circular structure to JSON

这种报错一般是数据处理的问题。比如: 我想在代码中把某个数组对象转换为Json字符串 JSON.stringify(this.$store.state.tagsView.visitedViews) 该数组对象的数据结构为: 这样转换就会造成“TypeError: Converting circular structure to JSON”报错。 但其实在需求中我只用到path字段的信息,所以应该处理完再转化为json字符串: const visitedViews_temp = this.$store.s

树上骑个猴的博客 6850

Android 13.0 双屏时触摸失效问题排查与修复

摘要:本文记录了RK3588 Android12开发板上主屏触摸失效问题的排查与解决过程。通过分析发现,USB触摸设备被错误关联到辅屏(displayId=3)而非主屏(displayId=0)。解决方案是修改TouchInputMapper.cpp,强制触摸设备使用INTERNAL viewport(主屏),并保持设备在viewport不活跃时仍启用。该修改涉及约40行代码,有效解决了多显示器环境下触摸设备错误映射的问题,同时提供了详细的调试方法和注意事项。

ip0417的博客 353

YOLOv11全网首发:注意力独家魔改 | 具有切片操作的SimAM注意力,魔改SimAM助力小目标检测

1)直接作为注意力使用,效果秒杀SimAM;2)高效和卷积结合,代替原始网络的卷积操作;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1571

解决TypeError: Converting circular structure to JSON

在json序列化的时候遇到TypeError: Converting circular structure to JSON 该错误的原因就是存在自己引用自己的情况。不多少上代码 var cache = []; var aa = JSON.stringify(rowData, function(key, value) { if (typeof value === 'ob...

万能的僵小鱼 3万+

[23]-->变长SPI接口

然而,FPGA技术复杂,学习门槛较高,许多人(初学者或学生)在学习过程中面临诸多挑战。(1)模式0:SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 0,CPHA=0;(2)模式1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换,CPOL= 0,CPHA=1;(3)模式3:SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 1,CPHA=1;

m0_46498597的博客 178

解决报错:TypeError: Converting circular structure to JSON

uni-app项目运行到支付宝平台, 组件循环引用引发报错:TypeError: Converting circular structure to JSON 错误的解决方案

sakuralight的博客 2371

【WRF编译-Lab1】使用自动脚本编译WRF:错误总结

WRF编译过程及错误总结

WW、forever的博客 83

Deepseek Engram 论文全面解读

以下是对 DeepSeek 与北京大学于联合发布的论文《》(简称Engram 论文)的。

lpfasd123的博客 355

小程序 Uncaught TypeError: Converting circular structure to JSON

小程序开发过程中一直报 Uncaught TypeError: Converting circular structure to JSON错误,检查很多次代码,发现代码是没问题的,原因就是代码中console.log过多,~了狗 小程序console过多报错: 转 Uncaught TypeError: Converting circular structure to JSON 解决办法:...

lishaoh的博客 2962

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

小程序报错: Uncaught TypeError: Converting circular structure to JSON

今天把最近一直在开发的小程序放安卓手机上测试一下,结果某个页面就一直报错: Uncaught TypeError: Converting circular structure to JSON先说一下基本的环境:系统:Android 6.0.1手机:小米4微信版本:6.6.6小程序基于mpvue开发在看到这个错误的时候,明白导致的原因应该是因为一个对象里面有循环引用,然后这个对象不幸的被JSON...

Dreawer微信小程序联盟 6812

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

vue ssr 服务端 路由 报错 err= TypeError: Converting circular structure to JSON

代码: let matched = this.$route.matched.filter(item => item.meta && item.meta.title) matched.map(val => { // 解决方法 val.instances = {} }) // levelList = this.jsons(levelList) this.$store.commit('app.

YONGEGE 879

关于报错 TypeError: Converting circular structure to JSON

原理:循环引用指的是对象 A 中包含对对象 B 的引用,而同时对象 B 中也包含了对对象 A 的引用当发生了循环引用时,执行一些操作(例如序列化对象)可能会出现问题。

小文同学的博客 3180

iview框架的穿梭框之疼---“TypeError: Converting circular structure to JSON“

因为项目要用到iview的穿梭框功能,结果报了个错误,搞了比较久,错误如下图: 穿梭框html代码: js代码: 官方事例: 找了半天,都没有找出错误在哪里,后来,经同事点拔,才知道,祸事出在取名那里。也是官方那里误导了我,就是那个render方法名,不能取为render(item){ } 后来改为以下就好了: 同时方法名改为以下: ...

qweasdzxc_1092665276的博客 1369

Uncaught TypeError: Converting circular structure to JSON

循环引用的对象转JSON的问题

brilliantSt的博客 3588

随手记:TypeError: Converting circular structure to JSON --> starting at object with constructor ...

TypeError: Converting circular structure to JSON --> starting at object with constructor ...

weixin_63515766的博客 538
上一篇: Type of the default value for 'propsTree' prop must be a function
下一篇: CSS选择器
xiaojinglyd
博客等级 码龄9年 6粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值