后台数据经常以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浏览器下的开发者工具的输出结果。
时间: 2024-10-20 05:35:33