您的位置:首页 > Web前端 > JavaScript

javascript eval和JSON之间的关系

2013-12-31 17:10 337 查看
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);
}
});
})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: