JavaScript中JSON.stringify中的第二个参数

JavaScript中JSON.stringify中的第二个参数,javascript,json,function,stringify,Javascript,Json,Function,Stringify,在JavaScript的JSON.stringify()函数中,我偶尔会看到以下语法: JSON.stringify(obj, null, 4) 但是,我不知道第二个参数null应该做什么。据我所知,上述函数将对象作为其第一个参数,并将其转换为字符串变量。第三个参数,4在本例中,缩进并漂亮地打印结果字符串对象。但即使在我读了官方文件上的解释之后,我也看不出第二个论点试图做什么。。。那么,这个论点有什么作用呢?还是仅仅为了接受第三个论点?(但我认为该函数应该同时使用参数名和参数,例如,JSON.

在JavaScript的
JSON.stringify()
函数中,我偶尔会看到以下语法:

JSON.stringify(obj, null, 4)
但是,我不知道第二个参数
null
应该做什么。据我所知,上述函数将对象作为其第一个参数,并将其转换为字符串变量。第三个参数,
4
在本例中,缩进并漂亮地打印结果字符串对象。但即使在我读了官方文件上的解释之后,我也看不出第二个论点试图做什么。。。那么,这个论点有什么作用呢?还是仅仅为了接受第三个论点?(但我认为该函数应该同时使用参数名和参数,例如,
JSON.stringify(obj,space=4)
。我不确定JavaScript中是否允许使用这种语法,如果不允许,请原谅。但我不知道我的预期一开始是正确的,所以我还是想提出一个问题)


谢谢。

第二个参数可以是在串接时执行替换的函数

null或未定义的第二个参数表示要使用标准 字符串化,无需任何定制

从Firefox 3.5.4开始,JSON.stringify()提供了额外的 通过使用可选参数实现自定义功能。这个 语法是:

jsonString=JSON.stringify(值[,替换符[,空格]])

将JavaScript对象的值转换为JSON字符串

替换更改字符串化过程行为的函数,或 字符串和数字对象的数组,用作 选择要包含在中的值对象的属性 JSON字符串。如果此值为null或未提供,则 该对象包含在生成的JSON字符串中

空格用于在输出中插入空格的字符串或数字对象 用于可读性目的的JSON字符串。如果这是一个数字,它是 指示用作空白的空格字符数;这 如果这个数字大于10,则上限为10。值小于1 表示不应使用任何空间。如果这是一个字符串,则字符串 (或字符串的前10个字符,如果长度大于此值) 用作空白。如果未提供此参数(或 null),不使用空白。替换参数

replacer参数可以是函数或数组。作为一个 函数,它有两个参数,键和 严格化。在其中找到密钥的对象作为 替换者是这个参数。最初,它被一个空键调用 表示正在字符串化的对象,然后调用它 正在字符串化的对象或数组上的每个属性。它应该 返回应添加到JSON字符串的值,如下所示:

如果返回一个数字,则与该数字对应的字符串为 添加到JSON字符串时用作属性的值。如果 返回一个字符串,该字符串在 将其添加到JSON字符串中。如果返回布尔值,“true”或 添加时,视情况使用“false”作为属性值 将其转换为JSON字符串。如果返回任何其他对象,则该对象为 递归地字符串化为JSON字符串,调用替换程序 函数,除非对象是函数,其中 case未向JSON字符串添加任何内容。如果返回undefined,则 属性不包括在输出JSON字符串中。注意:您不能 使用replacer函数从数组中删除值。如果你 返回undefined或使用null函数

范例

如果replacer是数组,则数组的值指示 对象中应包含在结果JSON中的属性 绳子


在JavaScript中,如果不传递第二个参数,就无法传递第三个参数。
因此,当需要传递
空格时,
null
replacer
函数的占位符

replace改变字符串化过程行为的函数,或字符串和数字对象数组,用作白名单,用于选择/过滤要包含在JSON字符串中的值对象的属性。如果此值为null或未提供,则生成的JSON字符串中包含对象的所有属性

replacer参数可以是函数或数组

作为一个函数,它接受两个参数:键和正在字符串化的值。在其中找到密钥的对象作为替换者的this参数提供

最初,调用replace函数时,使用一个空字符串作为表示正在字符串化的对象的键。然后对正在字符串化的对象或数组上的每个属性调用它

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}.
   JSON.stringify(value[, replacer[, space]])