1. JSON.stringify提供了参数用于格式化字符串
var str_json = JSON.stringify(data,null,’\t’)
这样打印出来的字符串就是添加了换行之后的字符串啦,可以用于导出这些数据,保存本地查看方便。
2. JSON.stringify提供了参数用于筛选自己需要的那部分数据
例如对于一个对象data:
var data =[
{
name: "程咬金",sex:"1",age:26
},
{
name: "程才",sex:"0",age:20
},
{
name: "程新松",sex:"1",age:22
},
{
name: "程功",sex:"1",age:18
}
];
我们需要从中筛选出每一项中的姓名和性别,剔除掉年龄,那么我们可以使用下面这种?:
var realData = JSON.stringify(data,["name","sex"])
打印结果,?
这样,我们就不需要再笨拙的遍历获取啦~~~
3.JSON.stringify第二个参数可以通过回调函数做一个映射关系
- 比如说,我们把sex里的1,0修改为男,女
/*回调函数做一个映射关系*/
var str_json = JSON.stringify(data,function(key,value){
if(key == 'sex'){
return ["女",'男'][value];
}
return value;
});
console.log(str_json);
结果如下:
- 再比如:
var json = {"domain" : "sojson.com","author":"soso"}
json = JSON.stringify(json, function(key,value){
if(key == "domain"){
return undefined;//踢出domain
};
return value;
});
结果如下:
// JSON = {“author”:“soso”}
第二个参数function中使用两个return,来更新编辑后的value值
4.JSON.stringify可以用来判断两个对象是不是相等,或者对象是否包含某一属性
//判断数组是否包含某对象
let data = [
{name:'echo'},
{name:'听风是风'},
{name:'天子笑'},
],
val = {name:'天子笑'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//true
//判断两数组/对象是否相等
let a = [1,2,3],
b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true
注意:JSON.stringify()在序列化过程中,会忽略undefined,function,symbol等值,直接不会输出这个整个键值对。?有例子
JSON.stringify({x: undefined, y: Object, z: Symbol("")}); // '{}'
JSON.stringify([undefined, Object, Symbol("")]); // '[null,null,null]'
JSON.stringify({[Symbol("sojson")]: "sojson"}); // '{}'