Ajax中解析Json的两种方法对比分析


Posted in Javascript onJune 25, 2015

eval();  //此方法不推荐

JSON.parse();  //推荐方法

一、两种方法的区别

我们先初始化一个json格式的对象:

var jsonDate = '{ "name":"周星驰","age":23 }'


var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法


var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法

然后在控制台调用:

console.log( jsonObj.name );  // 两种方法都可以正确输入 周星驰

那么问题来了 两种方法有什么区别呢?(下面我们稍微把代码改动一下,蓝色字体为修改部分)

var jsonDate = '{ "name":alert("hello"),"age":23 }'


var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法


console.log( jsonObj.age ); //会先执行“alert”输出“hello” 然后才输出 23

换“JSON.parse();”方法:

var jsonDate = '{ "name":alert("hello"),"age":23 }'


var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法


cosole.log( jsonobj.age ) // 报错 这个错误告诉我们这个字符串是不合法的

小结:“eval();”方法解析的时候不会去判断字符串是否合法,而且json对象中的js方法也会被执行,这是非常危险的;而“JSON.parse();”方法的优点就不用多说了,推荐此方法。(不明白的盆友可以自己在控制台测试一下)

二、扩展问题

var jsonDate = '{ "name":"周星驰","age":23 }'

大家可以看到在上面测试时一直用红色把包在花括号外面的引号标注了起来,这对引号是很关键却又是常常被忽略的,因为 “eval();” 和 “JSON.parser();” 这两个方法的参数只接受字符串,也就是说只能解析字符串!!

那我不经会有一个思考,我们在初始化的时候若不加引号对,那么它本身就是对象,js可以直接获取对象本身的属性和方法;为什么还要加引号将它变成字符串之后再用 “eval();” 或者 “JSON.parse();” 解析,这样做不是既不环保又没有效率吗?

原因很简单:前端提供给后台的只能是字符串数据格式,后台返回给前台的就看返回的是什么数据格式,是字符串就必须解析之后再用。

(这个小问题一般大家都会忽略掉,不太关注。我之所以好奇的原因也是因为对后台了解的不够,把这个问题抛出来希望对后台不熟的朋友有所帮助,知道是怎么回事后自然而然会加深记忆,在开发过程中就不会漏掉了)

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 Javascript
快速入门Vue
Dec 19 Javascript
Bootstrap源码解读导航(6)
Dec 23 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
Feb 04 Javascript
node.js实现登录注册页面
Apr 08 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
Feb 11 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 Javascript
新手快速学习JavaScript免费教程资源汇总
Jun 25 #Javascript
JavaScript中字符串(string)转json的2种方法
Jun 25 #Javascript
深入理解JavaScript编程中的原型概念
Jun 25 #Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 #Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 #Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 #Javascript
深入分析JSON编码格式提交表单数据
Jun 25 #Javascript
You might like
SONY ICF-F10中波修复记
2021/03/02 无线电
yii gridview实现时间段筛选功能
2017/08/15 PHP
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
面包屑导航详解
2017/12/07 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Python多继承原理与用法示例
2018/08/23 Python
python进行文件对比的方法
2018/12/24 Python
numpy数组广播的机制
2019/07/12 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
如何基于Python按行合并两个txt
2020/11/03 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
一组SQL面试题
2016/02/15 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
大学自主招生自荐信
2013/12/16 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
会计工作检讨书
2015/02/19 职场文书
《失物招领》教学反思
2016/02/20 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
TV动画《间谍过家家》公开PV
2022/03/20 日漫
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android