2

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

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

1 回答 1

4

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

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

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

于 2012-11-17T06:30:30.857 回答