2014-10-31 104 views

回答

0

JSON.stringify()函數帶有一個可選的第二個參數,稱爲「替代者」。它可以是一個函數或一個數組,它指導序列化過程如何將值包含在正在構建的JSON字符串中。

如果該參數是一個函數,則會傳遞兩個參數key(屬性名稱)和value。如果鍵是被「字符串化」的「外部」對象的一部分,則this值被排列爲undefined,或者如果頂級對象下面的結構的一部分是對子對象的引用,則值被排列爲undefined。如果鍵/值不應該包含在結果中,該函數可以返回undefined

如果該值是一個數組,它決定了要包含在結果中的頂級對象的屬性。

因此:

var obj = { 
    a: 1, 
    b: { 
    c: 2, 
    notMe: "super secret" 
    }, 
    d: 3 
}; 

var str = JSON.stringify(obj, function replacer(key, value) { 
    if (this && key === "notMe" && this.c === 2) 
    return undefined; 
    return value; 
}); 

將導致包含字符串

{ "a": 1, "b": { "c": 2 }, "d": 3 } 

的 「B」 對象的 「notMe」 屬性 「STR」 將被排除在外。