Json字符串和Json对象相互转化

本文介绍了JSON字符串与JSON对象之间的转换方法,包括使用eval(), JSON.parse()及JSON.stringify()等,并对比了不同方法的特点与适用场景。

在数据传输过程中,json是以文本,即字符串的形式传递的,而js操作的是JSON对象,所以JSON对象和JSON字符串之间的相互转换是关键

例如:

JSON字符串:    var str = '{ "name": "name1","sex": "m" }';

JSON对象:      var obj = { "name": "name1", "sex": "w" };

一、JSON字符串转换为JSON对象

要使用上面的str,必须使用下面的方法先转化为JSON对象:

       var obj = eval('(' + str + ')');     //由JSON字符串转换为JSON对象,必须把文本包围在括号中,这样才能避免语法错误: "("  + str+  ")"

或者 var obj = $.parseJSON(str);      // 将JSON字符串转化为JSON对象  (jQuery)

或者 var obj= str.parseJSON();       //由JSON字符串转换为JSON对象

或者 var obj= JSON.parse(str);       //由JSON字符串转换为JSON对象

可以这样读取:

console.log(obj.name);

console.log(obj.sex);

特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。

二、可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。

例如:var str=obj.toJSONString(); //将JSON对象转化为JSON字符

或者  var str=JSON.stringify(obj); //将JSON对象转化为JSON字符

总结:

    上面我们也看到了在进行类型转化的时候总的来说有两种,一种是JavaScript自带的解析器,而另一种就是JSON解析器,其中javascript解析器可以编译执行任何的javascript代码所以这里隐藏了一个潜在的安全问题而JSON解析器只能识别JSON文本,而不会编译脚本所以比较安全,而且JSON解析器的速度更快。

    上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。

转载于:https://www.cnblogs.com/zlxbk/p/7017895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值