手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JSON 和 JavaScript eval使用说明
JSON 和 JavaScript eval使用说明
摘要: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

【JSON 和 JavaScript eval使用说明】相关文章:

JavaScript中的substr()方法使用详解

JavaScript中String.match()方法的使用详解

JavaScript中this关键字使用方法详解

JavaScript中setMonth()方法的使用详解

JavaScript使用技巧精选

JavaScript中的blink()方法的使用

JavaScript中search()方法的使用

介绍JavaScript中Math.abs()方法的使用

JavaScript中for循环的使用详解

JavaScript事件委托实例分析

精品推荐
分类导航