JavaScript的eval JSON object问题
时间:2024-05-09 10:33:59
通常的做法就是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);
标签:eval,JSON
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
微信小程序基于数据库时间实现商品倒计时功能(可重用代码)
2024-01-16 06:05:38
![](https://img.aspxhome.com/file/2023/9/104729_0s.png)
python中的import、from import及import as的区别解析
2022-10-07 15:56:09
python打包exe开机自动启动的实例(windows)
2023-11-08 06:34:00
Python实现连点器的示例代码
2023-04-17 00:11:29
![](https://img.aspxhome.com/file/2023/8/124138_0s.png)
一次mysql迁移的方案与踩坑实战记录
2024-01-13 03:34:42
![](https://img.aspxhome.com/file/2023/1/121281_0s.png)
精妙的SQL语句
2024-01-20 09:29:38
getElementsByAttribute
2009-10-27 12:13:00
解决golang中container/list包中的坑
2024-05-21 10:25:42
Python获取CPU、内存使用率以及网络使用状态代码
2023-03-14 22:43:36
NopCommerce架构分析之(四)基于路由实现灵活的插件机制
2024-05-13 09:14:51
ASP 使用jqGrid实现读写删的代码(json)
2010-03-07 17:26:00
asp如何做一个只能从本站点才能访问的页面?
2010-07-12 19:00:00
浅谈vue-lazyload实现的详细过程
2024-04-29 13:09:17
Python实现异常检测LOF算法的示例代码
2023-11-03 08:05:01
![](https://img.aspxhome.com/file/2023/0/133710_0s.png)
解决goland新建项目文件名为红色的问题
2024-04-25 14:58:49
![](https://img.aspxhome.com/file/2023/7/134277_0s.jpg)
简单谈谈MySQL5.7 JSON格式检索
2024-01-22 09:07:03
![](https://img.aspxhome.com/file/2023/1/124551_0s.jpg)
Pycharm新建模板默认添加个人信息的实例
2022-03-30 20:59:50
![](https://img.aspxhome.com/file/2023/5/80585_0s.jpg)
用滤镜使网页图片产生旋转效果
2007-11-03 11:36:00
![](https://img.aspxhome.com/file/UploadPic/20072/20072311370301s.jpg)
YOLOv5目标检测之anchor设定
2022-04-23 16:22:10
![](https://img.aspxhome.com/file/2023/9/87809_0s.jpg)
解析Oracle 8i/9i的计划稳定性
2010-07-26 13:09:00