JSON对象转JSON字符串,格式化字符串以及JSON.stringify参数详解

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"});    // '{}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值