前言
@H_404_2@平常在使用JSON.stringify
,通常直接用来将对象或数组转化成字符串,也就是JSON.stringify(value)
,原来它还有两个可选参数,完整的JSON.stringify(value[,replacer][,space])
。
-
value
:必选,要被转化的对象或数组。 -
@H_404_2@
replacer
:可选,分为两种方式,一种数组,另一种方法。 -
@H_404_2@
space
:可选,向返回值 JSON文本添加缩进、空格和换行符以使其更易于读取。- 如果省略 space,则将生成返回值文本,而没有任何额外空格。
- 如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。
- 如果 space 是一个非空字符串(例如“t”),则返回值文本在每个级别中缩进字符串中的字符。
- 如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。
JSON.stringify(value)
@H_404_2@转化对象// {"name":"alean","age":22}
@H_404_2@转化数组
// ["alean",22]
ps: 非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。@H_404_2@布尔值、数字和字符串在对象或数组中会被转化成对应的原始值。 @H_404_2@
undefined
、任意的函数和Symbol
值,在对象中会被忽略。
console.log(JSON.stringify(obj1));
// {"name":"alean","age":22,"height":180}
@H_404_2@
undefined
、任意的函数和Symbol
值,在数组中会被转化成null
。
console.log(JSON.stringify(arr1));
// ["alean",null,null]
@H_404_2@不可枚举的属性会被忽略
console.log(JSON.stringify(obj2));
// {"height":22}
JSON.stringify(value,repacer)
@H_404_2@replacer
为数组,转化数组中具有键值的成员。成员的转化顺序与键在数组中的顺序一样。当value
参数也为数组时,将忽略replacer
数组。
console.log(JSON.stringify(obj3,['age']));
// {"age":22}
console.log(JSON.stringify(arr3,'1'));
// ["alean",22]
@H_404_2@
replacer
为函数,则调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回undefined
,则排除成员。根对象的键是一个空字符串:""。
function replacer (key,value) {
if(typeof value === 'number' || typeof value === 'object') {
return value;
}
}
console.log(JSON.stringify(obj4,replacer));
// {"age":22,"height":180}
JSON.stringify(value,repacer,space)
@H_404_2@如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。console.log(JSON.stringify(obj5,20));
/
{
"name": "alean","age": 22
}
/
@H_404_2@如果 space 是一个非空字符串(例如“t”),则返回值文本在每个级别中缩进字符串中的字符。
console.log(JSON.stringify(obj6,'\n'));
/**
{
"name": "alean","age": 22
}
**/
@H_404_2@完~