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

时间:2023-03-09 21:37:15
eval()和JSON.parse()的区别

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

假设有一个json字符串:

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

然后解析为对象:

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格式字符串的解析