打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何解决使用JSON.stringify时遇到的循环引用问题

程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化成json字符串,保存到本地以便后续具体分析。

然而如果JavaScript对象本身包含循环引用,则JSON.stringify不能正常工作,错误消息:

VM415:1 Uncaught TypeError: Converting circular structure to JSON

解决方案,使用下面这段来自这个网站的代码,定义一个全局cache数组,每当待序列化的JavaScript对象的属性被遍历时,将该属性对应的值存储到cache数组去。

如果遍历时发现,有属性值已经在cache数组里有值了,说明检测到了循环引用,此时直接return退出循环即可。

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; // 清空变量,便于垃圾回收机制回收

使用这种办法,我成功将一个存在循环引用的JavaScript对象序列化成字符串了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JSON 格式数据的定义及操作
你不知道的冷知识:JSON.stringify 居然还能这样用?
jquery json 格式教程
哎哟,这就是JSON
JSON的自定义序列化和解析
JSON解析与序列化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服