一、定义
JSON.stringfy(value[,replacer][,space]) 方法将value转化为字符串
二、参数
参数1 value(必填对象或者数组)
value的值一般是对象或者数组,基础数据类型及对应的包装类型是会被转换成相应字符串,本身数据类型是字符串的有点特殊。
- 本身数据类型是函数,symbol,undefined的,结果为undefined。
- 本身值是NaN,Infinity,null,结果是 null。
- value值假如有toJSON()方法,则结果由这个方法定义。且仅序列化可枚举的属性。
JSON.stringify(1) === '1' // true
JSON..stringify('1').length // 3
JSON..stringify(Symbol(1))// undefined
JSON.stringify(Object.create(null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } } ) ); // '{"y":"y"}'
let obj = {
a: '1',
b: '2',
toJSON() {
return {
value: this.a + this.b
}
}
}
console.log(JSON.stringify(obj, null, 2))
参数2 replacer(可选函数或数组)null或者undefined占位。value为数组时,此参数无效
对象
let obj = {
a: '1',
b: '2',
}
console.log(
JSON.stringify(obj, function(key, value) {
if (key == 'a') {
return value + key
}
return value
}, 2),
)
//result
{
"a": "1a",
"b": "2"
}
数组
只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中
console.log(JSON.stringify(obj, ['a'], 2))
//result
{
"a": "1"
}
参数3 space(可选,数字或字符串)
美化输出,指定缩进的空格
- 数字:1-11之间 <1没有空格,>11 按11处理
- 字符串:取前10个字符,将字符串当成空格