JSON 和 JavaScript eval使用说明


Posted in Javascript onJune 13, 2010

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 相关文章推荐
jquery实现瀑布流效果分享
Mar 26 Javascript
JavaScript通过join函数连接数组里所有元素的方法
Mar 20 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 Javascript
JavaScript 身份证号有效验证详解及实例代码
Oct 20 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
微信小程序实现图片上传、删除和预览功能的方法
Dec 18 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
Vue插值、表达式、分隔符、指令知识小结
Oct 12 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
ExtJS PropertyGrid中使用Combobox选择值问题
Jun 13 #Javascript
js null undefined 空区别说明
Jun 13 #Javascript
javascript dom代码应用 简单的相册[firefox only]
Jun 12 #Javascript
DOM Scripting中的图片切换[兼容Firefox]
Jun 12 #Javascript
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 #Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 #Javascript
jquery form表单提交插件asp.net后台中文解码
Jun 12 #Javascript
You might like
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
跟老齐学Python之重回函数
2014/10/10 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python易忽视知识点小结
2015/05/25 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
前台文员岗位职责
2013/12/28 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
我的祖国演讲稿
2014/05/04 职场文书
说明书范文
2014/05/07 职场文书
爱国主义演讲稿
2014/05/07 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
python本地文件服务器实例教程
2021/05/02 Python
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers