前言
平常在使用JSON.stringify
,通常直接用来将对象或数组转化成字符串,也就是JSON.stringify(value)
,原来它还有两个可选参数,完整的JSON.stringify(value[,replacer][,space])
。
JSON.stringify(value)
转化对象
// {"name":"alean","age":22}
转化数组
// ["alean",22]
ps: 非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。
布尔值、数字和字符串在对象或数组中会被转化成对应的原始值。
undefined
、任意的函数和Symbol
值,在对象中会被忽略。
console.log(JSON.stringify(obj1));
// {"name":"alean","age":22,"height":180}
undefined
、任意的函数和Symbol
值,在数组中会被转化成null
。
console.log(JSON.stringify(arr1));
// ["alean",null,null]
不可枚举的属性会被忽略
console.log(JSON.stringify(obj2));
// {"height":22}
JSON.stringify(value,repacer)
replacer
为数组,转化数组中具有键值的成员。成员的转化顺序与键在数组中的顺序一样。当value
参数也为数组时,将忽略replacer
数组。
console.log(JSON.stringify(obj3,['age']));
// {"age":22}
console.log(JSON.stringify(arr3,'1'));
// ["alean",22]
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)
如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。
console.log(JSON.stringify(obj5,20));
/
{
"name": "alean","age": 22
}
/
如果 space 是一个非空字符串(例如“t”),则返回值文本在每个级别中缩进字符串中的字符。
console.log(JSON.stringify(obj6,'\n'));
/**
{
"name": "alean","age": 22
}
**/
完~
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。