有人可以澄清一下过滤规则吗?
属性 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?
最佳答案
来自MDN ,如果 replacer
(JSON.stringify 的第二个参数)是一个数组,则它指定最终字符串中的对象中包含的属性集。
您将其设置为 ["x","y","z"]
在这种情况下,您生成的字符串具有这三个属性,您可能错过的是它适用于所有属性不仅仅是顶层的属性,因此由于您没有在数组中指定 "a"
和 "b"
它们不包含在最终字符串中。
尝试 JSON.stringify(obj,["x","y","z", "a", "b"]);
http://jsfiddle.net/mowglisanu/rhCTY/
关于javascript - 用于具有对象值的属性的 JSON.stringify 过滤器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13428247/