JavaScript的eval JSON object问题


Posted in Javascript onNovember 15, 2009

通常的做法就是var jsonData = eval(xmlHttp.responseText)。这看起来似乎一切都是正确的,但当你运行代码的时候,你会发现报“invalid labe”错误了。为什么?我也不清楚,但我找到了解决这个问题的方法。

在我刚遇到这个问题的时候也特别头痛,因为看起来所有编码是正确的,为了测试出现问题的位置,我逐渐缩小代码范围,最终得到如下简短代码:

var jsonStr1 = '{"Name":"Tom","Sex":"Man"}'; 
var jsonObj1 = eval(jsonStr1); 
alert(jsonObj1.Name);

以上代码执行正是报一开始说的invalid labe错误。难道eval函数对某些表达式或对象有限制?于是我又测试了数组对象,代码如下,结果下面代码运行很正常:
var arrStr = '["Tom","Man"]'; 
var arrObj = eval(arrStr); 
alert(arrObj[0]);

难道是我机子上的JavaScript解析器就JSON解析方面出了问题,于是我又测试下面代码,但结果一样正常:
var jsonObj = {"Name":"Tom","Sex":"Man"}; 
alert(jsonObj.Name);

最终我还是没有自行把问题解决,于是根据相关错误信息上网搜索答案,没想到一下子就找到了问题的根源,解决办法就是“在eval的时候,要先把 JSON字符串值用 ‘()'括号先括起来”。网上找的资料都没有说明是什么原因,当然我也还是没有明白正真的原因的。括号是起强制先执行或先运算作用的,返回的JSON就一个完整的对象,中间也没有表达式,为什么还要加括号!像数组这种较复杂点的对象也能正常eval。没办法,就先记着这种用法吧。正确用法如下(注意看eval两端的括号):
var jsonStr2 = '{"Name":"Tom","Sex":"Man"}'; 
var jsonObj2 = eval('(' + jsonStr2 + ')'); 
alert(jsonObj2.Name);
Javascript 相关文章推荐
新浪的图片新闻效果
Jan 13 Javascript
JavaScript入门教程(8) Location地址对象
Jan 31 Javascript
js 幻灯片的实现
Dec 06 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
Sep 16 Javascript
jQuery下的动画处理总结
Oct 10 Javascript
提取字符串中年月日的函数代码
Nov 05 Javascript
javascript获取元素CSS样式代码示例
Nov 28 Javascript
关于Vue在ie10下空白页的debug小结
May 02 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
javascript 构建模块化开发过程解析
Sep 11 Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 #Javascript
JavaScript 语法集锦 脚本之家基础推荐
Nov 15 #Javascript
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 #Javascript
flash 得到自身url参数的代码
Nov 15 #Javascript
javascript 去字符串空格终极版(支持utf8)
Nov 14 #Javascript
jQuery checkbox全选/取消全选实现代码
Nov 14 #Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 #Javascript
You might like
PHP 登录记住密码实现思路
2013/05/07 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
wxpython绘制圆角窗体
2019/11/18 Python
Python3监控疫情的完整代码
2020/02/20 Python
jupyter notebook实现显示行号
2020/04/13 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
python中os.remove()用法及注意事项
2021/01/31 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
软件部经理岗位职责范本
2014/02/25 职场文书
小学一年级评语大全
2014/04/22 职场文书
师范大学生求职信
2014/06/13 职场文书
课外科技活动总结
2014/08/27 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
社会实践活动总结
2015/02/05 职场文书
教师远程研修感悟
2015/11/18 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
详解 TypeScript 枚举类型
2021/11/02 Javascript