iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解如何解决使用JSON.stringify时遇到的循环引用问题
  • 614
分享到

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

2024-04-02 19:04:59 614人浏览 薄情痞子
摘要

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

程序员在日常做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对象序列化成字符串了。

到此这篇关于详解如何解决使用JSON.stringify时遇到的循环引用问题的文章就介绍到这了,更多相关JSON.stringify 循环引用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解如何解决使用JSON.stringify时遇到的循环引用问题

本文链接: https://www.lsjlt.com/news/122081.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解如何解决使用JSON.stringify时遇到的循环引用问题
    程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化成json字符串,保存到本地以便后续具体...
    99+
    2022-11-11
  • 使用JSON.stringify时遇到的循环引用问题怎么解决
    这篇文章给大家分享的是有关使用JSON.stringify时遇到的循环引用问题怎么解决的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的...
    99+
    2023-06-14
  • js中如何解决foreach循环中遇到的问题
    这篇文章给大家分享的是有关js中如何解决foreach循环中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.列表页面用"foreach循环"的时候...
    99+
    2022-10-19
  • 如何解决使用openpyxl时遇到的问题
    本篇内容主要讲解“如何解决使用openpyxl时遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决使用openpyxl时遇到的问题”吧!最近在用python处理Excel表格是遇到...
    99+
    2023-06-14
  • SpringBoot @PathVariable使用时遇到的问题及解决
    目录@PathVariable使用时遇到的问题第一个问题解决办法第二个问题解决办法@PathVariable 404问题@PathVariable使用时遇到的问题 第一个问题 接口:...
    99+
    2022-11-12
  • 使用springboot时,解决@Scheduled定时器遇到的问题
    目录@Scheduled定时器遇到的问题下面说一下@Scheduled 注解的几个参数一、可以通过配置文件配置进来的二、不可通过配置文件配置的 (作用相同)定时任务@Schedule...
    99+
    2022-11-12
  • 使用@ApiModel遇到的问题如何解决
    这篇文章主要介绍了使用@ApiModel遇到的问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇使用@ApiModel遇到的问题如何解决文章都会有所收获,下面我们一起来看看吧。@ApiModel遇到的问...
    99+
    2023-07-02
  • 使用nodeAPI时遇到过异步问题如何解决
    这篇文章主要讲解了“使用nodeAPI时遇到过异步问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nodeAPI时遇到过异步问题如何解决”吧!问题闲逛技术群时常常看到群友遇到异...
    99+
    2023-07-05
  • 同时使用swiper和echarts遇到的问题如何解决
    今天小编给大家分享一下同时使用swiper和echarts遇到的问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。项...
    99+
    2023-07-06
  • 使用nodeAPI时遇到过异步问题解决
    目录问题总结问题 闲逛技术群时常常看到群友遇到异步问题, 这里就最近看到的问题做个解答: 问题大致是这样: 下面这段代码, 是希望输出456的, 但实际上却输出了[], 因为rea...
    99+
    2023-01-28
    nodeAPI异步问题 nodeAPI 异步
  • 如何解决使用ProcessBuilder的遇到的问题
    这篇文章主要介绍如何解决使用ProcessBuilder的遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用ProcessBuilder踩到的坑最近使用ProcessBuilder执行命令,命令内容正确,但...
    99+
    2023-06-15
  • JavaScript 深拷贝的循环引用问题详解
    如果说道实现深拷贝最简单的方法,我们第一个想到的就是 JSON.stringify() 方法,因为JSON.stringify()后返回的是字符串,所以我们会再使用JSON.pars...
    99+
    2022-12-27
    JavaScript 深拷贝 JavaScript 深拷贝循环引用 JS循环引用
  • 如何解决MySQL使用中遇到的问题
    这篇文章给大家分享的是有关如何解决MySQL使用中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql_mode=only_full_group_by引起group b...
    99+
    2022-10-18
  • 如何解决使用canvas绘图时遇到的跨域问题
    这篇文章主要介绍了如何解决使用canvas绘图时遇到的跨域问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。当在canvas中绘制一张外链图片时,我们会遇到一个跨域问题。示例...
    99+
    2023-06-09
  • 使用@ApiModel遇到的问题及解决
    目录@ApiModel遇到的问题1. 习惯2. 遇坑3. 排查4. 解决@ApiModel和@ApiModelProperty版本@ApiModel@ApiModelProperty...
    99+
    2022-11-13
  • 如何解决HashMap并发时会引起死循环的问题
    这篇文章给大家分享的是有关如何解决HashMap并发时会引起死循环的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。今天研读Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时,其中有...
    99+
    2023-06-15
  • 在python项目中使用2sys.argv时遇到的问题如何解决
    这篇文章主要介绍了在python项目中使用2sys.argv时遇到的问题如何解决,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:python可以做什么Python是一种编程语言,内置了许多...
    99+
    2023-06-06
  • Java 轮询锁使用时遇到问题解决方案
    目录问题演示简易版轮询锁问题1:死循环反例优化版问题2:线程饿死反例优化版总结前言: 当我们遇到死锁之后,除了可以手动重启程序解决之外,还可以考虑使用顺序锁和轮询锁,这部分的内容可以...
    99+
    2022-11-13
  • Java轮询锁使用时遇到的问题怎么解决
    这篇文章主要介绍了Java轮询锁使用时遇到的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java轮询锁使用时遇到的问题怎么解决文章都会有所收获,下面我们一起来看看吧。问题演示当我们没有使用轮询锁之...
    99+
    2023-06-30
  • 解决SpringBoot中使用@Transactional注解遇到的问题
    目录使用@Transactional注解遇到的问题1、不建议在接口上添加@Transactional注解2、@Transactional注解3、默认情况下4、数据库引擎需要支持事务管...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作