JSON 和 JavaScript eval使用说明
JSON 和 JavaScript eval使用说明
发布时间:2016-12-30 来源:查字典编辑
摘要:JSON格式可以使对象(object)、数组(array)、值(value)、字符串(string)、数值(number)。复制代码代码如下...

JSON 格式可以使对象(object)、数组(array)、值(value)、字符串(string)、数值(number)。

复制代码 代码如下:

<script type="text/javascript">

var user = {

"Name":"Andy",

"Sex" :"man",

"Age" :"20",

"Phone":{"mobilephone":"123456789","telephone":"1234-12345678"},

"baby":[{"big":"xiaohong"},{"middle":"xiaoming"},{"small":"xiaoli"}] //包含数组

}

alert(user.Name);

alert(user.Phone.mobilephone);

alert(user.baby[0].big);

user.baby[0].big = "--";//修改了 JSON 值

alert(user.baby[0].big);

</script>

参考:http://www.json.org/json-zh.html

下面来看看 JavaScript 的 eval 函数。

eval 函数会评估给定的一个JavaScript代码的字符串,并试图去执行包含在字符串里的表达式或者一系列的合法的 JavaScript 语句。eval 函数将把最后一个表达式或者语句包含的值或引用作为返回值。

代码

复制代码 代码如下:

<script type="text/javascript">

var bar = "bar";

var foobar = eval('"foo"+bar');

alert(bar + foobar);//执行语句

foobar = eval('if(bar = "bar"){bar = "foo-bar";}else{bar = "bar-foo";}');

alert(foobar);//返回语句中包含的值

</script>

JSON 和 对象字面量(Object Literals)的区别:JSON 的名字部分严格用引号+名字来表示。

代码

复制代码 代码如下:

<script type="text/javascript">

//对象字面量

var objectLiteral = {

name:"Objector.L",

age:"24",

special:"JavaScript",

sayName:function(){

return this.name;

}

};

//JSON 对象

var jsonFormat = {

"summary":"Blogs",

"blogrolls":[

{

"title":"Explore JavaScript",

"link":"http://example.com"

},

{

"title":"Explore JavaScript",

"link":"http://example.com"

}

]

};

</script>

由于 Ajax 的兴起, JSON 这种轻量级的数据格式作为客户端与服务器端之间传输的格式逐渐流行起来,进而出现的问题是如何将服务器端构建好的 JSON 数据转换为可用的 JavaScript 对象,利用 eval 函数无疑是一种简单而直接的方法。在转化的时候需要将 JSON 字符串的外面包装一层园括号:

var jsonObject = eval("("+ jsonFormat +")")

加园括号的目的是迫使 eval 函数在评估 JavaScript 代码的时候强制将括号内的表达式(expression)转换为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不佳加外层的括号,那么eval会将大括号之别为JavaScript代码块的开始结束标记机,那么{}将被认为是执行了一句空语句。所以下面两个执行结果是不同的:

复制代码 代码如下:

alert(eval("{}")); //return undefined

alert(eval("({})")); //return [object Object]

JSON 格式的名字部分为什么要加引号?因为eval函数会将{foo:"bar"}解释成合法的JavaScript 语句,而非表达式。但人们往往是想让eval将这段代码解释成一个对象。所以JSON 格式会强制你去在名字的外侧加上引号,再结合圆括号,eval就不会错误的将JSON解释成代码块。

复制代码 代码如下:

//eval 错误解析语义

alert(eval('{foo:"bar"}')); //return "bar",incorrect

//eval 正确解析JSON

alert(eval('({"foo":"bar"})'));//return JSON object,correct

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类