gpt4 book ai didi

javascript - 在具有循环依赖的大对象上调用 JSON.stringify 时出现 "too much recursion"错误

转载 作者:数据小太阳 更新时间:2023-10-29 05:47:21 25 4
gpt4 key购买 nike

我有一个包含循环引用的对象,我想查看它的 JSON 表示形式。例如,如果我构建这个对象:

var myObject = {member:{}};
myObject.member.child = {};
myObject.member.child.parent = myObject.member;

并尝试调用

JSON.stringify(myObject);

我收到“太多递归”错误,这并不奇怪。 “子”对象引用了它的“父对象”,父对象引用了它的子对象。 JSON 表示不必非常准确,因为我只是将它用于调试,而不是将数据发送到服务器或将对象序列化为文件或类似的东西。有没有办法告诉 JSON.stringify 忽略某些属性(在本例中是子对象的 parent 属性),这样我会得到:

{
"member" : {
"child" : {}
}
}

我能想到的最接近的方法是使用 getChild()getParent() 方法而不仅仅是成员,因为 JSON.stringify 会忽略任何作为函数的属性,但如果没有必要,我宁愿不这样做。

最佳答案

您可以将函数作为第二个参数传递给 stringify。此函数接收要字符串化的成员的键和值作为参数。如果此函数返回未定义,则该成员将被忽略。

alert(JSON.stringify(myObject, function(k, v) {
return (k === 'member') ? undefined : v;
}));

...或使用例如firebug 或使用 toSource() 方法,如果您只想查看对象内部的内容。

alert(myObject.toSource());

关于javascript - 在具有循环依赖的大对象上调用 JSON.stringify 时出现 "too much recursion"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3895399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com