具有对象值的属性的JSON.stringify过滤器不起作用

时间:2012-11-17 06:18:00

标签: javascript json

有人可以澄清过滤规则吗?

属性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?

1 个答案:

答案 0 :(得分:4)

MDN开始,如果replacer(JSON.stringify的第二个参数)是一个数组,它指定最终字符串中对象中包含的属性集。

您将其设置为["x","y","z"],在这种情况下,您的结果字符串具有这三个属性,您可能错过的是它适用于所有属性而不仅仅是顶级属性,因为您没有指定数组中的"a""b",它们未包含在最终字符串中。

尝试JSON.stringify(obj,["x","y","z", "a", "b"]); http://jsfiddle.net/mowglisanu/rhCTY/