【发布时间】:2014-08-15 17:41:19
【问题描述】:
我正在使用一个库 Instafeed,它创建了一个 feed 对象。 feed 对象相当复杂。
我需要将此对象转换为字符串值以进行传输。
问题是,我收到了Uncaught TypeError: Converting circular structure to JSON。我遇到的所有答案都说改变对象以摆脱循环引用。但是,该对象非常复杂,我宁愿不必这样做。
有没有其他方法可以序列化这个对象以避免循环引用错误?
编辑
实际上,我正在查看控制台中的对象,我看到了这个:
我将context 键总共扩展了 30 次,它一直在继续。我没有内存问题,并且提要运行正常,加载图像是唯一的延迟,所以看起来这个库不会创建嵌套元素的无限循环。
这只是对象如何显示的一个特殊性,而不是对象本身的结构的指示吗?
我该如何序列化这样的东西?
另外,我尝试了JSON-to-XML plugin,但在转换时出现以下错误:
Uncaught RangeError: Maximum call stack size exceeded
【问题讨论】:
-
可能。您希望如何表示循环引用?
-
你在用这个提要做什么?您绝对需要将所有内容序列化吗?如果没有,您可以改用分页,这在 Instafeed 网站上有所提及。
-
@BenSmith 我实际上是在尝试通过 websockets 发送提要对象本身,所以是的。还有其他方法可以实现更大的目标,但直接通过它是最简单的。
-
@FelixKling 我不明白这个问题。我想代表它无论如何我可以让它序列化。
-
循环引用没有灵丹妙药。通常,您必须考虑是什么使对象具有唯一性,然后将该信息用作值而不是对象本身。但是,在您的情况下,
context似乎只是引用了对象本身。如果您可以假设情况总是如此,那么只需将其设置为例如 null 或删除该属性。
标签: javascript json serialization