首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError: JSON.stringify无法序列化循环结构

TypeError: JSON.stringify无法序列化循环结构
EN

Stack Overflow用户
提问于 2021-07-22 04:30:57
回答 1查看 52关注 0票数 3

每当我使用near-cli调用我的contract view方法时,它都工作得很好,终端以JSON格式正确地输出结果。

但是当我在我的angular项目中使用near-api-js方法调用相同的方法时,它给出了一个错误:

代码语言:javascript
运行
复制
Error: Uncaught (in promise): TypeError: JSON.stringify cannot serialize cyclic structures.

near-cli的输出以供参考,以及通过near-api-js调用相同方法时的预期输出

代码语言:javascript
运行
复制
{
  files: [
    {
      owner: 'some string',
      key: 'some string',
      cid: 'some string'
    }
  ],
  length: 1
}

这可能是什么原因,解决方案是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-07-22 04:47:49

循环引用示例:

代码语言:javascript
运行
复制
var circularReference = {otherData: 123};
circularReference.myself = circularReference;
JSON.stringify(circularReference);

说明:circularReference通过cirularReference.myself引用自身。

Mozilla's website有一个很好的例子来说明如何找到和删除循环引用:

代码语言:javascript
运行
复制
const getCircularReplacer = () => {
  const seen = new WeakSet();
  return (key, value) => {
    if (typeof value === "object" && value !== null) {
      if (seen.has(value)) {
        return;
      }
      seen.add(value);
    }
    return value;
  };
};

JSON.stringify(circularReference, getCircularReplacer());
// {"otherData":123}

您可以修改循环引用,而不是删除循环引用。

然而,这是一种对症治疗。最好的办法是首先找出为什么会出现循环引用,如果这是由bug引起的,那么就修复它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68476117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档