|
|
|
|
|
用JSON.stringify()
轉(zhuǎn)換字符串時,我們可以加一個過濾函數(shù),最終返回的結(jié)果只保留數(shù)值項,或某些特定內(nèi)容的項。
這個功能非常好用,因為我們有時并不需要所有的字符串結(jié)果,我們更想直接得到我們想要的內(nèi)容。
這就是使用了 replacer
方法。
例子(function)
function replacer(key, value) {
if (typeof value === "string") {
return undefined;
}
return value;
}
var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);
結(jié)果為
{"week":45,"month":7}
從這個結(jié)果,我們成功只保留了我們想要的內(nèi)容項,把不需要的項移除了。
replacer參數(shù)
replacer
參數(shù)可以是一個函數(shù)或者一個數(shù)組。作為函數(shù),它有兩個參數(shù),鍵(key)和值(value),它們都會被序列化。
在開始時, replacer
函數(shù)會被傳入一個空字符串作為 key 值,代表著要被 stringify
的這個對象。隨后每個對象或數(shù)組上的屬性會被依次傳入。
函數(shù)應當返回JSON字符串中的value, 如下所示:
replacer
方法。除非該對象是一個函數(shù),這種情況將不會被序列化成 JSON 字符串。注意:不能用 replacer
方法,從數(shù)組中移除值(values),如若返回 undefined 或者一個函數(shù),將會被 null 取代。
例子(array)
如果 replacer
是一個數(shù)組,數(shù)組的值代表將被序列化成 JSON 字符串的屬性名。
JSON.stringify(foo, ['week', 'month']);
// '{"week":45,"month":7}', 只保留 “week” 和 “month” 屬性值。