我有一个包含循环引用的对象,我想看看它的 JSON 表示。例如,如果我构建这个对象:
var myObject = {member:{}};
myObject.member.child = {};
myObject.member.child.parent = myObject.member;
并尝试打电话
JSON.stringify(myObject);
我收到错误“递归过多”,这并不奇怪。“子”对象具有对其“父”的引用,而父对象具有对其子的引用。JSON 表示不必完全准确,因为我只是将它用于调试,而不是用于将数据发送到服务器或将对象序列化为文件或类似的东西。有没有办法告诉 JSON.stringify 忽略某些属性(在这种情况下parent
是子对象的属性),这样我会得到:
{
"member" : {
"child" : {}
}
}
我能想到的最接近的方法是使用getChild()
andgetParent()
方法而不仅仅是成员,因为 JSON.stringify 会忽略任何作为函数的属性,但如果我不必这样做,我宁愿不这样做。