在 JS/TS 中将循环结构转换为 JSON

使用 JSON 对象时,我们可能会遇到“TypeError:将循环结构转换为 JSON”错误。当 JSON 对象的属性引用同一对象中的另一个属性时,就会发生此错误,从而产生循环引用。尝试使用 JSON.stringify() 将对象序列化为 JSON 字符串将导致此错误。 如果遵循谨慎的设计原则(除非无法避免),这个问题在我们自己的代码中很少出现,但在使用第三方库或模块时经常会出现这种情况。 如何解决? 我们可以通过将我们自己的自定义替换器作为 JSON.stringify() 的参数来解决这个问题。 这里我们本质上做的是,如果不存在弱集,则将值存储在弱集中;如果存在,则返回未定义。因此,通过这种方式,我们能够消除循环依赖。 使用这种方法,我们将丢失具有循环引用的键/值对。如果我们想在序列化时保留循环,还有其他允许循环结构的库可用。

posted @ 2024-06-26 10:27  江月年年何相似  阅读(145)  评论(0)    收藏  举报