一:JSON数据的两种解析方法 JSON.parse() 、eval ()方法
1 :JSON.parse() : 用于将一个 JSON 字符串转换为 JavaScript 对象。
var str = '{"name":"zhangsan","age":18,"gender":"man"}';
JSON.parse(str);
结果:
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。(有的浏览器不支持 JSON.parse() 如:IE 6 、IE 7 就不支持)
2:eval(): 也是用于将一个 JSON 字符串转换为 JavaScript 对象
var str = '{"name":"zhangsan","age":18,"gender":"man"}';
eval('('+str+')'); // 格式: eval( '(' + string + ')' );
结果:
为什么eval()解析的时候要加括号?
那是因为eval()相当于一个执行环境,当你不加括号的时候,str 会被认为是一条复合语句。运行的时候就会逐个字符的解析。
但是加上括号的时候,str 就当做一个表达式去运算。从括号开始就被当做了对象进行识别。
JSON.parse() 和 eval()的区别
var num = 1;
var jsonstr = '{"name":"zhangsan","age":++num}';
var jsondata1 = eval('('+jsonstr+')');
console.log(jsondata1);
console.log(num);//这时num值为2
var jasondata2=JSON.parse(jsonstr);
console.log(jsondata2);//报错
结果:
从上例就可以明显地看出, eval在解析字符串时,会执行该字符串中的代码。
由于用eval解析一个json字符串而造成原先的num的值改变(这样的后果是相当危险的)。
二:JSON.stringify() :用于将 JavaScript 值转换为 JSON 字符串
var str = {"name":"zhangsan","age":18,"gender":"man"};
JSON.stringify(str);
结果为:
三:jQuery.parseJSON() 将格式完好的JSON字符串转为与之对应的JavaScript对象
var str = '{"name":"zhangsan","age":18,"gender":"man"}';
jQuery.parseJSON(str)
结果:
网友评论