JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析

发布时间 - 2026-01-11 03:06:34    点击率:

 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

PS:下面在单独介绍下eval()和JSON.parse()的区别

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

假设我们有一个json格式的字符串:

'{
 "student" : [
  {"name":"鸣人","age":17}, 
  {"name":"小樱","age":17},
  {"name":"佐助","age":17}
 ]
}'

然后我们需要把它解析成json对象

1、eval()代码如下:

var data = '{"student" : [{"name":"鸣人","age":17}, {"name":"小樱","age":17},{"name":"佐助","age":17}]}';
eval('(' + data + ')');

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

var data = '{"student" : [{"name":"鸣人","age":17}, {"name":"小樱","age":17},{"name":"佐助","age":17}]}';
JSON.parse(data);

区别:eval方法不会去检查给的字符串时候符合json的格式~同时如果给的字符串中存在js代码eval也会一并执行~比如如果上面的json格式的字符串改为:(注意红色部分)

var data = '{"student" : [{"name":"鸣人","age":17}, {"name":"小樱","age":alert("hehe")},{"name":"佐助","age":17}]}';

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

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

相比较而言eval方法是很危险的~特别是当涉及到第三方时我们需要确保传给eval的参数是我们可以控制的~不然里面插入比如window.location~指向一个恶意的连接~那叫叫天啦

从这个层面讲~还是推荐使用JSON.parse来实现json格式字符串的解析

考虑到我们在制造json格式的字符串时极易出现错误~这里推荐一个json格式字符串的在线校验工具:http://jsonlint.com/


# eval  # json.parse  # json  # js使用  # javascript中JSON.parse()与eval()解析json的区别  # 深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解  # java中的JSONP使用实例详解  # ASP.NET core Web中使用appsettings.json配置文件的方法  # jQuery Ajax前后端使用JSON进行交互示例  # Spring Boot使用FastJson解析JSON数据的方法  # jquery使用EasyUI Tree异步加载JSON数据(生成树)  # java使用FastJson解析Json数据  # 成龙  # 第一个  # 鸣人  # 佐助  # 小樱  # 就会  # 推荐使用  # 可以使用  # 转化为  # 也会  # 两种  # 把它  # 我们可以  # 弹出  # 考虑到  # 更快  # 不符合  # 涉及到  # 报错  # 会去 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云完成域名注册与建站?  php json中文编码为null的解决办法  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  历史网站制作软件,华为如何找回被删除的网站?  网站制作价目表怎么做,珍爱网婚介费用多少?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  中山网站制作网页,中山新生登记系统登记流程?  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  黑客入侵网站服务器的常见手法有哪些?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何在Windows 2008云服务器安全搭建网站?  如何快速上传自定义模板至建站之星?  高端云建站费用究竟需要多少预算?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  如何在建站宝盒中设置产品搜索功能?  JS经典正则表达式笔试题汇总  如何制作一个表白网站视频,关于勇敢表白的小标题?  phpredis提高消息队列的实时性方法(推荐)  Laravel storage目录权限问题_Laravel文件写入权限设置  如何彻底卸载建站之星软件?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Thinkphp 中 distinct 的用法解析  北京专业网站制作设计师招聘,北京白云观官方网站?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel如何处理表单验证?(Requests代码示例)  如何快速搭建个人网站并优化SEO?  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Android中AutoCompleteTextView自动提示  Linux安全能力提升路径_长期防护思维说明【指导】  如何登录建站主机?访问步骤全解析  EditPlus 正则表达式 实战(3)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  C语言设计一个闪闪的圣诞树  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Java遍历集合的三种方式  微信小程序 配置文件详细介绍  网页制作模板网站推荐,网页设计海报之类的素材哪里好?