2012-11-17 49 views
2

有人可以澄清過濾規則嗎?JSON.stringify過濾器的屬性與對象值不起作用

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

回答

3

MDN,如果replacer(JSON.stringify的第二個參數)是一個陣列,它指定的屬性集包括在最終的字符串對象。

將它設置爲["x","y","z"]在這種情況下,你得到的字符串有這三個屬性,你可能已經錯過的是,它是適用於所有性質不只是那些在頂層,所以因爲你沒有指定"a""b"在你的數組中他們沒有包含在最後一個字符串中。

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

+0

感謝澄清穆薩,但A和B是不是對象的直接財產。他們應該提到:) –

+2

@Praveen:好的,他們使用*對象*,即複數對象。這不知何故表明屬性選擇適用於數據結構中包含的所有對象。 –

+0

夠公平的,謝謝菲利克斯和穆薩。 –

相關問題