JS 将json字符串 转为 json对象 中JSON.parse和eval的区别及用法

1、相同点

JSON.parse和eval函数都可将一段json字符串转换为json对象,如:

var json = '{"intro":[{"name":"lucy", "sex":"male"},{"name":"polly","sex":"male"}]}';
var res1 = eval('(' + json + ')');
var res2 = JSON.parse(json);
console.log(res1.intro[0].name); // lucy
console.log(res2.intro[1].sex); // male

2、不同点

JSON.parse将数据转换为 JS 对象时,会检测数据是否是标准的json格式,只解析属性名是双引号包裹的字符串对象,

并会忽略换行和空格,并能捕捉JSON中的语法错误,而eval函数可解析包含js语句的json字符串。JSON.parse的安全性更高。

var json = '{"intro":[{"name":"lucy", "sex":"male"},{"name":"polly","sex":alert("unkown")}]}';
var res1 = eval('(' + json + ')');
console.log(res1.intro[0].name); // lucy

当json字符串中含有js代码时,eval函数可执行其中的js代码,安全性低。

var json = '{"intro":[{"name":"lucy", "sex":"male"},{"name":"polly","sex":alert("unkown")}]}';
var res2 = JSON.parse(json); 

// 报错 VM134:1 Uncaught SyntaxError: Unexpected token a in JSON at position 62 at JSON.parse (<anonymous>) console.log(res2.intro[1].sex);

当json字符串中含有js代码时,JSON.parse报错,安全性高。

posted @   海乐学习  阅读(491)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2011-07-07 C++ 错误:const char [10]”转换为“const wchar_t
点击右上角即可分享
微信分享提示