是否有可以对复杂JSON对象进行字符串化的内置方法?
每次我使用JSON.stringfy时都会收到此错误:将循环结构转换为JSON ,我还需要其解析器
这是我的对象的图像 http://imgur.com/s3HbdtQ
答案 0 :(得分:5)
您无法将循环结构完全转换为JSON:没有什么可以描述那些不能在有限时间内转储的关系。
替代方案:
答案 1 :(得分:1)
答案 2 :(得分:0)
我推荐Flatted。它很小,效果很好。 压缩后的版本重1KB。
这是他们文档中的一个例子。
var a = [{one: 1}, {two: '2'}];
a[0].a = a;
// a is the main object, will be at index '0'
// {one: 1} is the second object, index '1'
// {two: '2'} the third, in '2', and it has a string
// which will be found at index '3'
Flatted.stringify(a);
// [["1","2"],{"one":1,"a":"0"},{"two":"3"},"2"]
然后可以在必要时将字符串化结果解析回去,并重新构建循环引用。
var a = [{one: 1}, {two: '2'}]
a[0].a = a
Flatted.stringify(a)
var a1 = Flatted.stringify(a)
var a2 = Flatted.parse(a1)
答案 3 :(得分:0)
标准和最佳解决方案是 json-stringify-safe 模块。
这是用法(在模块中描述):
var stringify = require('json-stringify-safe');
var circularObj = {};
circularObj.circularRef = circularObj;
circularObj.list = [ circularObj, circularObj ];
console.log(stringify(circularObj, null, 2));
// Output:
{
"circularRef": "[Circular]",
"list": [
"[Circular]",
"[Circular]"
]
}