如何解决JSON.stringify时因循环引用导致的无限递归问题?

2026-04-05 07:357阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计361个文字,预计阅读时间需要2分钟。

如何解决JSON.stringify时因循环引用导致的无限递归问题?

程序员在开发TypeScript/JavaScript时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化为json字符串,保存到本地以便后续整体分析。然而,如果JavaScript对象本身包含循环引用,则会出现问题。

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

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

VM415:1 Uncaught TypeError: Converting circular structure to JSON

如何解决JSON.stringify时因循环引用导致的无限递归问题?

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

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

阅读全文

本文共计361个文字,预计阅读时间需要2分钟。

如何解决JSON.stringify时因循环引用导致的无限递归问题?

程序员在开发TypeScript/JavaScript时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化为json字符串,保存到本地以便后续整体分析。然而,如果JavaScript对象本身包含循环引用,则会出现问题。

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

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

VM415:1 Uncaught TypeError: Converting circular structure to JSON

如何解决JSON.stringify时因循环引用导致的无限递归问题?

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

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

阅读全文