JSON在Javascript中的使用(eval和JSON.parse的区别)

来源:互联网 发布:centos下安装jdk1.8 编辑:程序博客网 时间:2024/06/03 21:26

JSON 和XML比较
json的长度和xml比起来更加短小
json读取速度更快
json可以使用javascript的内置方法直接进行解析,转化成Javascript对象,非常方便。
在Javascript使用eval将接送转化为json对象

var jsonData = '{"persons":{"name":"成龙","age":58},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = eval('('+jsonData+')');//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name);

在Javascript使用JSON.parse将接送转化为json对象

var jsonData = '{"persons":{"name":"成龙","age":58},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = JSON.parse(jsonData);//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name);

但是eval方法很不安全,例如:

var jsonData = '{"persons":{"name":"成龙","age":window.alert(123)},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = eval('('+jsonData+')');//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name);

将age的值换成了Javascript代码,依然可以解析,加入有人恶意修改这个代码,那么就会造成严重后果。

但是JSON.parse不同

var jsonData = '{"persons":{"name":"成龙","age":window.alert(123)},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = JSON.parse(jsonData);//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name);

浏览器会检查出json中的不合理的代码,并报告错误
所以推荐使用JSON.parse

原创粉丝点击