在线文档教程
JavaScript
错误 | Errors

Errors: Cyclic object value

Errors: Cyclic object value

信息

TypeError: cyclic object value (Firefox) TypeError: Converting circular structure to JSON (Chrome)

错误类型

TypeError

什么地方出了错?

调用JSON.stringify()循环对象引用结构时,不能将其转换为字符串。

例子

在如下的圆形结构中

var a = {}; var b = {}; a.child = b; b.child = a;

JSON.stringify() 将失败

JSON.stringify(a // TypeError: cyclic object value

在进行字符串化之前,您需要检查循环对象引用。例如,通过指定替代者函数作为第二个参数JSON.stringify()

seen = []; var replacer = function(key, value) { if (value != null && typeof value == "object") { if (seen.indexOf(value) >= 0) { return; } seen.push(value } return value; }; JSON.stringify(a, replacer // "{"child":{}}"

或者,您可以使用已经为此场景编写的库或实用程序功能。例如Douglas Crockford 有cycle.js