javascript eval和JSON之间的关系

eval函数的工作原理

eval函数会评估一个给定的含有javascript代码的字符串,并且视图去执行包含在字符串里的表达式或者

一系列的合法的javascript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。

console.info(eval("alert('a');alert('b')"))
console.info(eval("x=10;y=20;alert(x*y)"));   //200
console.info(eval("3+6"));   //9

JSON格式
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理 解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

{
    "acceptIs": null, 
    "entity": null, 
    "refuseIs": null, 
    "result": {
        "pageSize": 10, 
        "resultList": [
            {
                "SHNOTE": "法拉利F40", 
                "STATE": "提交", 
                "CTIME": "2013/12/31 13:53:28", 
                "PHONE": "13111050937", 
                "ID": "40288ba54347286501434736c6c60000", 
            },           
        ],   
        "totalPage": 1, 
        "totalSize": 4
    }
}

eval和JSON
利用eval函数可以将JSON数据转化为可用的javascript对象。

var datas=eval("("+data+")");

为什么要加括号?
加上圆括号的目的是使eval函数在评估javascript代码的时候强制将括号内的表达式转化为对象,
而不是作为语句来执行。例如对象{},如若不加外层的括号,那么eval会将大括号识别为javascript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。如下:

console.info(eval("{}"));   //undefined 
console.info(eval("({})")); //Object {}

涉及项目代码:

$(document).ready(function(){
	$.post('/homea/admin/UserBookView.do', {}, function(data) {
	    var datas=eval("("+data+")");
		for(var i=0;i<datas.result.resultList.length;i++){
			var id = datas.result.resultList[i]['ID'];
			var ctime = datas.result.resultList[i]['CTIME'];
			var state = datas.result.resultList[i]['STATE'];
			console.info(id+" "+ctime+" "+state);
		}
	});
})


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值