JavaScript对象与JSON格式字符串的相互转换
前言
在Web开发中,有时会遇到如下场景:前端向后台发起了一个请求(如ajax请求),让后台帮忙处理数据,接收到后台响应后在进行前端的一些交换处理。而后台接收参数、返回值都是JSON格式的字符串,这是就需要用到JavaScript对象与JSON格式字符串的相互转换了。
JavaScript对象转换为JSON格式字符串
-
JSON.stringify()函数
var testObj = {"hello":"world"}; var jsonStr= JSON.stringify(testObj);
语法:JSON.stringify(value[, replacer [, space]])
注意:IE8(兼容模式),IE7和IE6不支持,可以通过引入JSON官方提供的json2.js文件使它们支持。
JSON格式字符串转换为JavaScript对象
-
JavaScript eval() 函数
var obj = eval('(' + jsonStr+ ')');
优点:兼容性较高,IE8(兼容模式),IE7和IE6也可以支持
缺点:安全性较低,eval()会执行json字符串中的表达式
-
浏览器内置支持的对象JSON
var obj = JSON.parse(jsonStr);
优点:依赖较低,支持主流浏览器(Firefox,chrome,opera,safari,IE9,IE8等浏览器)
缺点:兼容性较低,IE8(兼容模式),IE7和IE6不支持,因为这些浏览器没有JSON对象
-
引入JSON官方提供的json2.js文件(推荐)
var obj = JSON.parse(jsonStr);
优点:可以看出是对方法2的补充,IE8(兼容模式),IE7和IE6就可以支持JSON对象以及其stringify()和parse()方法
缺点:依赖性较高,需要引入其它文件
-
引入jQuery库(推荐)
var obj = $.parseJSON(jsonstr); // jQuery.parseJSON(jsonstr)
优点:兼容性较高
缺点:依赖性较高,需要引入其它文件
参考
- 深入理解 JSON
- JavaScript中的JSON
- JSON官方网站
- JSON官方提供的json2.js文件