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报错,安全性高。
分类:
JavaScript
, Json
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.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