码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript解析json

时间:2014-08-31 17:12:11      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   io   java   ar   

后台数据经常以json数据格式传回前台,解析当然首选JSON对象。

JSON对象有两个方法,使用JSON.parse(str)可以将json字符串解析成js中的对象。

var o = JSON.parse(‘{"name":"zjz","age":"23"}‘);
console.log(o);
//Object {name: "zjz", age: "23"}

同时这个方法还可以接收第二个参数,这个参数是个函数,参数为转换后对象的键和对应的值。

JSON.parse(‘{"name":"zjz", "age":"23"}‘, function(key, value) {
    console.log(key + ‘:‘ + value)}
);
//name:zjz
//age:23 

 

与parse相对的是stringify函数,作用是将js对象序列化为一个json字符串。

var obj = {name: ‘zjz‘, age: ‘23‘};
var json = JSON.stringify(obj);
//"{"name":"zjz","age":"23"}"

但JSON对象IE8之前的浏览器不支持。

 

第二种方法,是通过eval。

eval(‘(‘ + ‘{"name":"zjz","age":"23"}‘ + ‘)‘);
//Object {name: "zjz", age: "23"}

需要注意的是在解析字符串的时候,需要在字符串之外加上括号,使其成为表达式,然后eval进行计算。

eval解析JSON中的注意点 这篇文章里讲的挺详细的。

大家都不建议用eval。

 

第三种方法,使用Function。

var o = new Function(‘return ‘ + ‘{"name":"zjz","age":"23"}‘)();
//Object {name: "zjz", age: "23"}

 

所以在解析JSON,可以先用parse,如果不支持再使用Function。

try {
      JSON.parse(str);
} catch(e) {
       try {
              return (new Function(‘return ‘ + str))();
       } catch(e) {
               alert(‘json error‘);
        }
}

 

 

文中的输出都是chrome浏览器下的开发者工具的输出结果。

 

JavaScript解析json

标签:style   blog   http   color   os   使用   io   java   ar   

原文地址:http://www.cnblogs.com/zjzhome/p/3947827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!