JSON.parse()、eval()、JSON.stringify()和jQuery.parseJSON()的用法

一: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);//报错

结果:

JSON.parse()、eval()、JSON.stringify()和jQuery.parseJSON()的用法_第1张图片
从上例就可以明显地看出, 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)

结果:


如果这篇文章对您有用,请多多支持!

你可能感兴趣的:(JSON.parse()、eval()、JSON.stringify()和jQuery.parseJSON()的用法)