ajax中解析json数据的方式
来源:互联网 发布:蒋方舟 与男 知乎 编辑:程序博客网 时间:2024/06/05 15:38
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();” 解析,这样做不是既不环保又没有效率吗?
原因很简单:前端提供给后台的只能是字符串数据格式,后台返回给前台的就看返回的是什么数据格式,是字符串就必须解析之后再用。
(这个小问题一般大家都会忽略掉,不太关注。我之所以好奇的原因也是因为对后台了解的不够,把这个问题抛出来希望对后台不熟的朋友有所帮助,知道是怎么回事后自然而然会加深记忆,在开发过程中就不会漏掉了
- ajax中解析json数据的方式
- Ajax中responseText解析json格式数据
- Android中解析json数据的方式之一:Gson
- Android中解析json数据的三种方式
- ajax解析JSON数据
- Android中json数据手动解析方式
- Ajax解析返回的Json数据
- ajax解析Json数据的方法
- ajax重新认识:(2)json数据解析两种方式
- ajax之(2):json数据解析两种方式
- jQuery AJAX获取JSON数据解析多种方式示例
- jquery通过ajax方式获取json数据和解析
- ajax中解析json数据的各种方法(返回类型为json或text)
- ajax中使用JSON的方法解析
- Struts2中使用ajax+json方式批量删除table数据
- jQuery中$.ajax解析xml、json格式数据
- ajax请求中json数据的处理
- S2SH+ajax+json-----jQuery中$.ajax解析xml、json格式数据
- 【Linux】grub安装CentOS7
- 每日一题 No.40 挑战程序设计竞赛
- Android设备内ASF(1)
- win10访问不了SAMBA
- 02-汇编-寻址方式
- ajax中解析json数据的方式
- Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'XXX'.
- 文件夹权限问题 ubuntu
- 数据库
- 【计算机视觉】opencv靶标相机姿态解算3 根据两幅图像的位姿估计结果求某点的世界坐标 (三维重建)
- Agent admitted failure to sign using the key
- 机器学习之决策树(ID3)算法与Python实现
- 数论常用内容——数根
- 有关常量的知识点