JSON 和 JavaScript eval使用说明

时间:2024-04-19 10:00:07 

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,eval
0
投稿

猜你喜欢

  • python计算auc指标实例

    2021-12-21 12:10:03
  • PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)

    2023-10-21 05:36:58
  • Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决

    2022-09-09 18:33:23
  • 不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)

    2021-07-08 07:35:00
  • Python Websocket服务端通信的使用示例

    2021-09-16 15:03:19
  • window.top[_CACHE]实现多个jsp页面共享一个js对象

    2023-07-18 09:25:14
  • python实现人人网登录示例分享

    2022-06-25 09:17:51
  • vue自定义filters过滤器

    2024-04-30 08:45:12
  • golang 实现tcp转发代理的方法

    2023-08-06 02:46:55
  • 在IE6中用PNG图片实现半透明效果

    2008-05-30 13:14:00
  • Python实现自动登录百度空间的方法

    2023-11-11 09:11:23
  • Python对PDF文件的常用操作方法详解

    2021-10-13 06:49:56
  • 详解在Python程序中自定义异常的方法

    2021-05-17 00:34:28
  • django admin实现动态多选框表单的示例代码

    2021-12-25 11:31:29
  • 聊聊Javascript中try catch的2个作用

    2024-04-22 13:25:57
  • mysql8.0.30安装配置最详细教程(windows 64位)

    2024-01-16 10:01:35
  • 详解Python执行py文件是否需要可执行权限

    2021-01-19 10:52:53
  • 对Python中的@classmethod用法详解

    2023-07-22 17:55:54
  • Python程序员鲜为人知但你应该知道的17个问题

    2021-06-14 11:37:14
  • mysql出现10061错误解决办法

    2010-07-04 13:36:00
  • asp之家 网络编程 m.aspxhome.com