You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hermes引擎报TypeError:JSON对象存在循环结构问题求助

解决Hermes引擎下"cyclical structure in JSON object"错误

错误现象

TypeError: cyclical structure in JSON object, js engine: hermes
输入文本为null时程序正常运行,输入非空文本时触发上述错误

问题原因

这个错误的核心是你尝试序列化的对象存在循环引用——比如对象的某个属性直接/间接引用了自身(比如obj.a = obj),或者两个对象互相引用(obj1.b = obj2; obj2.a = obj1)。当输入非空文本时,你的代码会触发这个带循环引用对象的序列化流程;而输入null时没有走到这一步,所以不会报错。

解决方案

1. 手动清理循环引用

定位到要序列化的目标对象,找到循环引用的属性,将其替换为非引用类型的值(比如只保留ID、名称等基础属性),或者直接移除不需要的引用属性。

2. 用自定义replacer函数处理

给JSON.stringify()传入自定义的replacer函数,自动跳过循环引用:

const stringifyWithoutCycle = (obj) => {
  const seen = new WeakSet();
  return JSON.stringify(obj, (key, value) => {
    if (typeof value === 'object' && value !== null) {
      if (seen.has(value)) {
        return undefined; // 跳过已处理的循环引用对象
      }
      seen.add(value);
    }
    return value;
  });
};

// 使用示例
const safeJson = stringifyWithoutCycle(yourTargetObject);

3. 排查输入关联逻辑

检查非空文本输入时的代码流程,确认是否不小心将DOM元素、类实例(通常带有内部循环引用)或其他复杂对象混入了要序列化的内容中。比如如果你的代码把输入文本和某个组件实例绑定后进行序列化,就会因为组件实例的内部引用导致报错。

内容的提问来源于stack exchange,提问作者Thenuja Hansidu Hettiarachchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:45:08