第二个参数可以是字符串化时执行替换的函数。
null 或未定义的第二个参数表示您要使用标准
字符串化,无需任何定制。
来自https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_pa
从 Firefox 3.5.4 开始,JSON.stringify() 提供了额外的
通过使用可选参数的定制能力。这
语法是:
jsonString = JSON.stringify(value [, replacer [, space]])
value 要转换为 JSON 字符串的 JavaScript 对象。
replacer 一个改变字符串化过程行为的函数,或者
用作白名单的字符串和数字对象数组
选择要包含在
JSON 字符串。如果此值为 null 或未提供,则所有属性
该对象包含在生成的 JSON 字符串中。
space 一个字符串或数字对象,用于在输出中插入空格
出于可读性目的的 JSON 字符串。如果这是一个数字,它
指示用作空格的空格字符数;这
如果大于该数字,则数字上限为 10。小于 1 的值
表示不应使用空格。如果这是一个字符串,则该字符串
(或字符串的前 10 个字符,如果它比那个长)
用作空白。如果未提供此参数(或
null),不使用空格。替换参数
replacer 参数可以是函数或数组。作为一个
函数,它有两个参数,键和值是
字符串化。找到密钥的对象被提供为
replacer 的这个参数。最初它被一个空键调用
表示被字符串化的对象,然后调用它
被字符串化的对象或数组的每个属性。这应该
返回应该添加到 JSON 字符串的值,如下所示:
如果返回一个数字,则对应于该数字的字符串是
添加到 JSON 字符串时用作属性的值。如果
您返回一个字符串,该字符串用作属性的值
将其添加到 JSON 字符串中。如果你返回一个布尔值,“真”或
在添加时,酌情使用“false”作为属性的值
它到 JSON 字符串。如果您返回任何其他对象,则该对象是
递归字符串化为 JSON 字符串,调用替换器
函数对每个属性,除非对象是一个函数,其中
情况下没有任何内容添加到 JSON 字符串中。如果返回未定义,则
属性不包含在输出 JSON 字符串中。注意:您不能
使用 replacer 函数从数组中删除值。如果你
return undefined 或者一个函数然后 null 被使用。
例子
function censor(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, censor);
The resulting JSON string is {"week":45,"month":7}.
如果 replacer 是一个数组,则数组的值表示该数组的名称
对象中应包含在结果 JSON 中的属性
字符串。