对象有点交叉引用,所以需要屏蔽一下,才能转换。 所以看有什么简单的办法,把parent这样的字段给屏蔽掉。
4 回复
/**
* 返回安全的JSON字符串
*
* @param {Object} data
* @param {String|Number} space
* @return {String}
* @api public
*/
var jsonStringify = function (data, space) {
var seen = [];
return JSON.stringify(data, function (key, val) {
if (!val || typeof val !== 'object') {
return val;
}
if (seen.indexOf(val) !== -1) {
return '[Circular]';
}
seen.push(val);
return val;
}, space);
};
使用方法:
var a = {b: 123, c:456};
a.a = a;
// 这个会自动把a.a替换成字符串[Circular]
console.log(jsonStringify(a));
// 输出结果为:{"b":123,"c":456,"a":"[Circular]"}
// 第二个参数可以用来格式化字符串
console.log(jsonStringify(a, 2));
/* 输出结果:
{
"b": 123,
"c": 456,
"a": "[Circular]"
}
*/