eval()和JSON.parse()的区别

我们将一个josn字符串解析为对象的时可以使用两种方法:

假设有一个json字符串:

'{
    "student" : [
        {"name":"zs","age":17}, 
        {"name":"ls","age":17},
        {"name":"ww","age":17}
    ]
}'

然后解析为对象:

1、eval()代码如下:

var data = '{"student" : [{"name":"zs","age":17}, {"name":"ls","age":17},{"name":"ww","age":17}]}';
eval('(' + data + ')');

2、JSON.parse()代码如下:

var data = '{"student" : [{"name":"zs","age":17}, {"name":"ls","age":17},{"name":"ww","age":17}]}';
JSON.parse(data);

区别:JSON.parse()会检查给的字符串是否符合json格式,eval方法不会去检查;

var data = '{"student" : [{"name":"zs","age":17}, {"name":"ls","age":alert("hehe")},{"name":"ww","age":17}]}';

执行eval方法后会先弹出一个提示框输出hehe的字符串,

但是使用JSON.parse()就会报错~显示错误信息为当前字符串不符合json格式,即JSON.parse()方法会检查需要转换的字符串是否符合json格式

相比较而言eval方法是很危险的,还是推荐使用JSON.parse来实现json格式字符串的解析



原文地址:https://www.cnblogs.com/yjq1021/p/8275744.html