在Javascript' JSON.stringify()
函数中,我偶尔会看到以下语法:
JSON.stringify(obj, null, 4)
但是,我无法得到第二个参数null
应该做的事情。只要我知道,上面的函数将一个对象作为其第一个参数,并将其转换为字符串变量。在这种情况下,第三个参数4
缩进并漂亮打印结果字符串对象。但是,即使在我阅读官方文件的解释之后,我也看不出第二个论点试图做什么......那么论证的作用是什么?或者只是为了接受第三个论点? (但我认为函数应该同时使用参数名称及其参数,例如,JSON.stringify(obj, space=4)
。我不确定Javascript中是否允许使用这种语法,所以请原谅我#&# 39;不是。但我一开始并不知道我的期望是正确的,所以无论如何都想提出一个问题。
感谢。
答案 0 :(得分:14)
第二个参数可以是在字符串化时执行替换的函数。
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一个改变字符串化过程行为的函数,或 一组String和Number对象,用作白名单 选择要包含在的值对象的属性 JSON字符串。如果此值为null或未提供,则为。的所有属性 该对象包含在生成的JSON字符串中。
space用于将空白插入输出的String或Number对象 用于可读性的JSON字符串。如果这是一个数字,它 表示用作空格的空格字符数;这个 如果数字大于10,则数字上限为10。值小于1 表明不应使用任何空间。如果这是String,则为字符串 (或者字符串的前10个字符,如果它长于那个字符) 用作空白区域。如果未提供此参数(或是 null),不使用空格。 replacer参数
replacer参数可以是函数,也可以是数组。作为一个 函数,它需要两个参数,键和值 字符串化。发现密钥的对象是作为 替换者这个参数。最初用空键调用它 表示正在进行字符串化的对象,然后调用它 对象或数组上的每个属性都是字符串化的。这应该 返回应添加到JSON字符串的值,如下所示:
如果返回Number,则该数字对应的字符串为 添加到JSON字符串时用作属性的值。如果 返回一个String,该字符串用作属性的值 将其添加到JSON字符串。如果你返回一个布尔值," true"要么 "假"在添加时适当地用作属性的值 它到JSON字符串。如果返回任何其他对象,则该对象为 以递归方式字符串化为JSON字符串,调用replacer 函数在每个属性上,除非对象是一个函数,在其中 大小写没有添加到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中的属性 字符串。
答案 1 :(得分:11)
如果没有在JavaScript中传递第二个参数,则无法传递第三个参数
因此,当您需要传递null
时,replacer
是space
函数的占位符。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
答案 2 :(得分:1)
JSON.stringify(value[, replacer[, space]])
替换器 的一种功能,用于改变字符串化过程的行为,或者是一个String和Number对象数组,用作选择/过滤对象属性的白名单。 JSON字符串中包含的value对象。如果此值为null或未提供,则对象的所有属性都将包含在结果JSON字符串中。
replacer参数可以是函数或数组。
作为函数,它具有两个参数:键和要字符串化的值。在其中找到密钥的对象作为替换者的this参数提供。
最初,使用一个空字符串作为键来表示替换对象函数,该字符串代表要被字符串化的对象。然后针对要字符串化的对象或数组上的每个属性调用它。