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

Second argument in JSON.stringify in JavaScript

本文关键字:第二个 参数 stringify JSON JavaScript      更新时间:2023-09-26

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

JSON.stringify(obj, null, 4)

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

谢谢。

第二个参数可以是在字符串化时执行替换的函数。

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

发件人https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_pa

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

jsonString=JSON.stringfy(value[,replacer[,space]])

value要转换为JSON字符串的JavaScript对象。

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

space用于在输出中插入空白的String或Number对象用于可读性目的的JSON字符串。如果这是一个数字指示要用作空白的空格字符数;这若这个数字大于10,那个么它的上限是10。值小于1指示不应使用任何空间。如果这是一个字符串(或者字符串的前10个字符,如果它比这个长的话)用作空白。如果未提供此参数(或null),不使用空白。更换器参数

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

如果返回数字,则与该数字对应的字符串为在添加到JSON字符串时用作属性的值。如果如果返回一个String,则当将其添加到JSON字符串中。如果返回布尔值"true"或在添加时,"false"用作属性的值(视情况而定)将其转换为JSON字符串。如果返回任何其他对象,则该对象为递归字符串化为JSON字符串,调用replacer函数,除非对象是函数,其中case不会向JSON字符串中添加任何内容。如果返回undefined,则属性未包含在输出JSON字符串中。注意:您不能使用replacer函数可以从数组中删除值。如果你返回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中的对象中的属性一串

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

   JSON.stringify(value[, replacer[, space]])

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

replacer参数可以是函数,也可以是数组。

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

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