Ajax中解析Json的两种方法详解
来源:互联网 发布:四平软件 怎么样 编辑:程序博客网 时间:2024/05/22 15:43
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中解析Json的两种方法详解
- Ajax中解析Json的两种方法详解
- Ajax中解析Json的两种方法详解
- ajax解析json的两种方法
- Ajax在解析Json的两种方法详解,eval()与 JSON.parse()
- Json解析1--Java构造和解析Json数据的两种方法详解
- ajax中使用JSON的方法解析
- Java构造和解析Json数据的两种方法详解一:使用org.json库
- Java构造和解析Json数据的两种方法详解二:使用JSON-lib库
- IOS解析JSON的两种方法
- JSON解析的两种方法
- js解析json的两种方法
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解一
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解一
- HTML
- windows10离线安装NET3.5
- 关于Mac最新操作系统Sierra没有未…
- nexus系列设备开机无法激活的解决…
- PHP 实现HTTP get 请求
- Ajax中解析Json的两种方法详解
- 9.回文数
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- Binary Search Tree Iterator
- 自己动手写RTP服务器——用RTP协议传输TS流
- iOS逆向 微信屏蔽群消息
- 排序整理
- 如何对List分段操作
- arm学习心得