将 JS 对象字符串化为 JSON 时如何保持循环引用

How to keep circular reference, when stringifying JS object to JSON

我正在处理一个类似文件树的对象,它是:

var object = {
    'name':'foo',
    'contains': {'thisObject': object,'parentObject': /* the object that contains the current object*/, 'foo':'bar'},
    'parent': /* the object that contains the current object*/
}

它可能看起来有点奇怪,但它看起来像这样是有原因的。

这是用户决定的,所以可以这样结束:

object.contains["foo"].contains["bar"].contains["biz"].contains["frt"]...

我需要以某种方式将它保存到用户的计算机上。现在,我正在使用 localStorage 和 JSON.stringify()。但是这样,JSON 会因循环结构错误而失败。

如何在保持循环结构的同时保存它? 有没有比 localStorage/JSON 更好的方法?

您是否尝试过允许循环引用的库?

一个好的是DOJO。 https://www.sitepen.com/blog/2008/06/17/json-referencing-in-dojo/

根据其说明:

var obj = {};
obj.me = obj;
var jsonWithCircularRef = dojox.json.ref.toJson(obj);