当前位置: 首页 > Web前端 > HTML5

使用JSON.stringify遇到循环引用问题怎么解决

时间:2023-04-05 21:19:01 HTML5

程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化成json字符串,并保存到本地,以便后续具体分析.但是,如果JavaScript对象本身包含循环引用,JSON.stringify将无法正常工作,报错信息:VM415:1UncaughtTypeError:ConvertingcircularstructuretoJSON解决方案,使用本站的以下代码定义全局缓存数组,每当遍历到要序列化的JavaScript对象的属性时,将该属性对应的值存入缓存数组。如果遍历时发现某些属性值在缓存数组中已经有值,则说明检测到了循环引用,直接return退出循环即可。变量缓存=[];varstr=JSON.stringify(o,function(key,value){if(typeofvalue==='object'&&value!==null){if(cache.indexOf(value)!==-1){//移除return;}//收集所有值cache.push(value);}returnvalue;});缓存=空;//清空变量方便垃圾回收使用这个方法,我成功地将一个带有循环引用的JavaScript对象序列化为字符串。更多Jerry原创文章在这里:《王子熙》: