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

猜你喜欢

  • 微信小程序基于数据库时间实现商品倒计时功能(可重用代码)

    2024-01-16 06:05:38
  • 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
  • 一次mysql迁移的方案与踩坑实战记录

    2024-01-13 03:34:42
  • 精妙的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
  • 解决goland新建项目文件名为红色的问题

    2024-04-25 14:58:49
  • 简单谈谈MySQL5.7 JSON格式检索

    2024-01-22 09:07:03
  • Pycharm新建模板默认添加个人信息的实例

    2022-03-30 20:59:50
  • 用滤镜使网页图片产生旋转效果

    2007-11-03 11:36:00
  • YOLOv5目标检测之anchor设定

    2022-04-23 16:22:10
  • 解析Oracle 8i/9i的计划稳定性

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