JavaScript中JSON.stringify中的第二个参数
Second argument in JSON.stringify in JavaScript
在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
时,null
是replacer
函数的占位符。
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函数时使用一个空字符串作为表示要字符串化的对象的键。然后,它会为要字符串化的对象或数组上的每个属性调用。
- 当第二个参数为空时管理JavaScript调用的构造
- 筛选器's的第二个参数不起作用
- jQuery Datepicker BeforeShowDay 第二个参数
- 添加第二个参数时,Javascript函数将停止工作
- JavaScript 部分应用函数 - 如何仅绑定第二个参数
- 何时适合将集合传递给主干模型构造函数第二个参数
- 下划线.js : _.where() 使用第一个参数,但不适用于第二个参数
- 如何在setInterval函数中生成第二个参数(持续时间)的随机持续时间值
- 如何将jquery对象转移到“On”方法(第二个参数)
- 是否可以将值数组作为第二个参数传递给 _.without() 函数
- JSON.stringify()工作不正常-第二个参数消失
- 结合Supercrollorama,TweenMax.to中第二个参数的含义是什么
- 简单`replace()`的第二个参数存在问题
- retrieve()中的第二个参数;始终在运行
- Javascript中reduce回调中的第二个参数
- 可以't在addEventListener方法的第二个参数中添加括号
- 骨干路由器多参数;第二个参数未定义
- JavaScript中JSON.stringify中的第二个参数
- 如果第二个参数再次是替换方法,则JavaScript替换不起作用
- 如何在Mootools fireEvent函数的第二个参数中访问对象实例