关于JSON.stringify()需要了解的几个点

1、作用:将对象或数组转换成字符串

//转换对象
var s={a:'1',b:'2',c:'3'};
var data=JSON.stringify(s);
console.log(data)//结果:{"a":"1","b":"2","c":"3"}

//转换数组
var a=[10,20,30];
var data2=JSON.stringify(a);
console.log(data2)//结果:[10,20,30]
console.log(typeof data2)//结果:string

2、解析数据,即将字符串还原成对象或数组。JSON.parse() 

console.log(JSON.parse(data))// 结果:(3) [10, 20, 30]
console.log(JSON.parse(data2))//结果:{a: "1", b: "2", c: "3"}

3、函数转换:无法转换函数,必须先将函数处理成字符串

//JSON.stringify将从对象删除任何函数,包括键和值
var f={a:'1',b:function(){return 'hello'},c:'3'};
data=JSON.stringify(f);
console.log(data)//结果:{"a":"1","c":"3"}


//提前将函数转换成字符串
var f={a:'1',b:function(){return 'hello'},c:'3'};
f.b=f.b.toString();
data=JSON.stringify(f);
console.log(data)//结果:{"a":"1","b":"function(){return 'hello'}","c":"3"}

//函数解析
test=JSON.parse(data);
test.b=eval("("+test.b+")");
console.log(test);//结果:{a: "1", c: "3", b: ƒ}
console.log(test.b())//结果:hello

4、常见使用场景

(1)提交大量数据给后台,需要转换成字符串

(2)对象的深复制,可通过JSON.parse(JSON.stringify(obj))

(3)判断两个数组是否相等、或者是数组是否包含某个对象

//判断数组中是否包含对象{age:21}
var a=[{name:'1'},{age:21}];
var o={age:21};
JSON.stringify(a).indexOf(JSON.stringify(o))>-1
//结果:true

//判断两个数组是否相等
a1=[1,2,3];
a2=[1,2,3];
console.log(JSON.stringify(a1)===JSON.stringify(a2)
//结果:true

(4)方便储存到session或者cokie中

5、其他参数,这个也是最容易被忽视的一个属性

JSON.stringify(value[, replacer [, space]])

replace:若为函数,则每个属性都会调用函数并处理;若为数组,则返回数组中指定的参数

//replacer为数组,只处理指定参数,可以分离出自己需要的那部分数据
s={a:'1',b:'2',c:'3'};
data=JSON.stringify(s,['a','b']);
console.log(data)
//{"a":"1","b":"2"}

//replacer为函数,执行函数
a=[{name:'zhangsan',age:12},{name:'lisi',age:21}]
s= JSON.stringify(a,function(key,value){
    if(key == 'age'){
        return value+1;
    }
    return value;
});
console.log(s);
//结果:[{"name":"zhangsan","age":13},{"name":"lisi","age":22}]

space:美化输出,为数字(1-10),标识空格的个数;为字符串,则前面添加对应的字符串。

//space为数字,添加空格
s={a:'1',b:'2',c:'3'};
data=JSON.stringify(s,['a','b'],1);
console.log(data)
//返回结果,添加1个空格
//{
//  "a": "1",
//  "b": "2"
//}

//space为字符串,添加字符串
s={a:'1',b:'2',c:'3'};
data=JSON.stringify(s,['a','b'],'bb');
console.log(data)
//返回结果,添加1个空格
//{
//bb"a": "1",
//bb"b": "2"
//}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值