文档章节

eval函数解析JSON 数据出错

火龙战士
 火龙战士
发布于 2015/03/27 16:05
字数 291
阅读 287
收藏 9

描述:使用eval函数解析JSON数据出错报

这个错误。

经使用debug测试才发现是我语法有问题:

没有解决前代码:

var ArrayData = eval(data);

解决后代码:

var JsonData = eval('('+data+')');

为什么要 eval这里要添加 '('+data+')'呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

© 著作权归作者所有

共有 人打赏支持
火龙战士

火龙战士

粉丝 111
博文 131
码字总数 99427
作品 0
北京
后端工程师
JSON 浅谈 — 3.0 解析

解析,是指将符合 JSON 语法规则的字符串转换成对象的过程。 不同的编程语言都提供了解析 JSON 字符串的方法,在这里主要讲解 JavaScript 中的解析方法。主要有三种: 使用 eval() 使用 JSON...

柠檬酷
2015/09/06
27
0
js中eval详解,用Js的eval解析JSON中的注意点

eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明语法“{}”并不能返回一个值...

一坨翔
06/27
0
0
javascript eval和JSON之间的联系

如果您想详细了解eval和JSON请参考以下链接: eval :https://developer.mozilla.org/En/CoreJavaScript1.5Reference/GlobalFunctions/Eval JSON:http://www.json.org/ eval函数的工作原理 ......

C_Liwang
2014/03/28
0
0
eval解析JSON中的注意点有哪些

 eval解析JSON中的注意点   在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:   1.一种为使用eval()函数。   2. 使用Function对象来进行返回解析。   使用eval函数来解析...

袁立宏
2012/10/17
0
0
JavaScript中的 JSON

JavaScript这种编程语言首要 的目的是为Netscape Navigator提供一种页面脚本语言。它仍被普遍的认为是Java 的一个子集,但事实并非如此。它是一种语法类似c语言并且支持面向对象的Scheme-li...

红薯
2010/04/21
827
1

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
21分钟前
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
44分钟前
3
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
51分钟前
1
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
21
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部