有人可以澄清过滤规则吗?
属性z未正确字符串化,请参见最后一行。
MDN说“如果是数组,则指定最终字符串中对象中包含的属性集。”
var obj = {x:1,y:'str',z:{a:1,b:2}};
var s = JSON.stringify(obj)
"{"x":1,"y":"str","z":{"a":1,"b":2}}"
var s = JSON.stringify(obj,["x","y","z"]);
"{"x":1,"y":"str","z":{}}" //z empty object why?
答案 0 :(得分:4)
从MDN开始,如果replacer
(JSON.stringify的第二个参数)是一个数组,它指定最终字符串中对象中包含的属性集。
您将其设置为["x","y","z"]
,在这种情况下,您的结果字符串具有这三个属性,您可能错过的是它适用于所有属性而不仅仅是顶级属性,因为您没有指定数组中的"a"
和"b"
,它们未包含在最终字符串中。
尝试JSON.stringify(obj,["x","y","z", "a", "b"]);
http://jsfiddle.net/mowglisanu/rhCTY/