为什么JS中eval处理JSON数据要加括号

2014-01-19  来源:本站原创  分类:javascript技巧  人气:0 

这篇文章主要介绍了为什么JS中eval处理JSON数据要加括号的相关资料,需要的朋友可以参考下

由于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]

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章
  • 为什么JS中eval处理JSON数据要加括号 2014-01-19

    这篇文章主要介绍了为什么JS中eval处理JSON数据要加括号的相关资料,需要的朋友可以参考下 由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象.利用eval函数无疑是一种简单而直接的方法.在转化的时候需要将JSON字符串的外面包装一层圆括号: var jsonObject = eval("(" + jsonFormat + ")")

  • js使用eval解析json(js中使用json) 2014-07-06

    eval的用法eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句,下面给出eval解析json的示例 先来说eval的用法,内容比较简单,熟悉的可以跳过 eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要特别注意的是对象声明语法"{}"并不能返回一个值,需要用括号括起来才会返回值,简单示例如下: var s1='"a" + 2'; //表达式

  • js使用eval解析json实例与注意事项分享 2014-11-17

    eval函数在js中有不少用处了,下面我来给各位朋友介绍eval解析json的实例,基于这个实例我们引出来在eval处理json数据时的一些注意事项,希望文章对各位同学会有所帮助 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON的规则很简单: 对象是一个无序的"'名称/值'对"集合.一

  • js 与 php 通过json数据进行通讯示例 2013-10-02

    这篇文章主要介绍了js与php通过json数据进行通讯的具体实现,需要的朋友可以参考下 js 与 php 通过json数据进行通讯 例子: php文件 <?php echo json_encode(array(array( 'liaotiantiao'=>$liaotiantiao, 'liaotiank'=>$liaotiank, 'chatuserid'=>$chatuserid, 'chattouserid'=>$chattouserid ))); ?> html

  • ASP.NET中实现把Json数据转换为ADO.NET DataSet对象 2014-12-06

    这篇文章主要介绍了ASP.NET中实现把Json数据转换为ADO.NET DataSet对象,本文讲解设计及实现方法,相关代码托管到GITHUB,需要的朋友可以参考下 Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Converter并不管用,而且也不一定能够满足项目需要.这里介绍另一种简单有效的方法,能够方便快速地将Json数据转为ADO.NET Data

  • js中eval()函数和trim()去掉字符串左右空格应用 2015-03-21

    对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格;对于js中eval()函数的理解是本人心得不一定正确,感兴趣的朋友参考下,或许对你学习eval()函数有所帮助 对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格. trim()是参照了jquery的源码,你可以放心使用. 对于js中eval()函数的理解是本人心得不一定正确. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional

  • 用Js的eval解析JSON中的注意点 2013-06-07

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先给出JSON字

  • Android中生成.使用Json数据实例 2015-03-09

    这篇文章主要介绍了Android中生成.使用Json数据实例,本文直接给出了实现代码,相对容易理解,需要的朋友可以参考下 1.Json的制作 package com.example.usingjson2; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import android.app.Activity; public class MainActivity extends

  • js解析与序列化json数据(二)序列化探讨 2013-12-25

    上一节我们讲解了JSON.stringify()的基本用法,这一节我们来重点探讨一下序列化,单独或组合使用这两个参数(过滤器/数组),可以更全面深入地控制JSON的序列化,感兴趣的朋友可以了解下,或许对你学习json有所帮助 上一节我们讲解了JSON.stringify()的基本用法,这一节我们来重点探讨一下序列化. JSON.stringify()除了要序列化的js对象外,还可以接收另外两个参数,这两个参数用于指定不同方式序列化js对象.第一个参数是过滤器,可以使一个数组,也可以是一个函数:第

  • js解析与序列化json数据(一)json.stringify()的基本用法 2015-03-31

    对象有两个方法:stringify()和parse().在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript 早期的JSON解析器基本上就是使用JavaScript的eval()函数.由于JSON是JavaScript语法的自己,因此eval()函数可以解析.解释并返回JavaScript的对象和数组. ECMAScript 5对解析JSON的行为进行了规范,定义了全局对象JSON. JSON对象有两个方法:stri

  • JS中eval函数的使用示例 2013-11-30

    eval函数会将 obj 当做代码去执行一遍,下面举个例子为大家详细介绍下具体的使用方法,感兴趣的朋友可以参考下哈,希望对大家有所帮助 eval(obj) ; 该函数会将 obj 当做代码去执行一遍. 例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &l

  • jquery中ajax调用json数据的使用说明 2014-08-29

    jquery里提供了便捷的ajax运用,下面总结我自己的一些经验 $.get()和$.post()这两个方法基本都一样使用,所以只说$.post()这个东东! 情形1: $.post("url",function);此时返回的数据没有处理,所以不是json格式! 情形2:$.post("url",function, "json");此时虽然指定了返回的数据为json格式,但实际上却不是! 情形3:$.post("url",{}

  • Node.js中相同模块是否会被加载多次? 2014-11-21

    JavaScript的包管理一直是个软肋,我很难想象,连这一基础功能都没有做好的语言,现在居然会如此流行.在我看来,其实JavaScript流行的最主要元素还是把持了浏览器,而Web应用在这几年掀起了一阵腥风血雨.任意一门语言,只要能像JavaScript般被标准采纳,被所有浏览器接受,它都能"成功",真是所谓宿命. 当然,既然它流行了,既然人们想要用它做大事了,就要开始为它制定一些模块的约定.这几天我为Jscex实现AMD规范的时候,便深刻体会到模块化的优势.Node.js也使用了C

  • JS中判断JSON数据是否存在某字段的方法 2014-11-05

    这篇文章主要介绍了JS中如何判断JSON数据是否存在某字段,需要的朋友可以参考下 如何判断传过来的JSON数据中,某个字段是否存在, 1.obj["key"] != undefined 这种有缺陷,如果这个key定义了,并且就是很2的赋值为undefined,那么这句就会出问题了. 2.!("key" in obj) 3.obj.hasOwnProperty("key") 这两种方法就比较好了,推荐使用. 答案原文: Actually, chec

  • jquery解析JSON数据示例代码 2014-01-21

    作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式 这里可以找到json.js的代码,后面还需要formutil.js的代码及MD5.js 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先给出JSON

  • JS字面量和JSON 2014-03-31

    JS字面量 1.字符串字面量(String Literal) 是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符. 在编程语言中,字面量是一种表示值的记法. 示例:var test="hello world!"; "hello world!"就是字符串字面量,test是变量名. 2.数组字面量(array literal) 示例:var team=["tom","john","sm

  • Struts2返回JSON数据的具体应用范例 2012-09-28

    Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2 JSON 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找我询问,我又细细地给他讲了一遍之后,才觉得无论如何要抽一个小时的时间来写这篇文章,从头到尾将Struts2与JSON的关系说清楚. 其实网络中,关于这个问题的答案已是海量,我当初也是从这海量的答案中吸

  • 深入了解Struts2返回JSON数据的原理及具体应用范例 2013-07-24

    早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找我询问,我又细细地给他讲了一遍之后,才觉得无论如何要抽一个小时的时间来写这篇文章,从头到尾将Struts2与JSON的关系说清楚. 其实网络中,关于这个问题的答案已是海量,我当初也是从这海量的答案中吸收精华,才将"Struts2返回JSON数据"这个问题搞清楚的.但是这些海量的答案,有一个

  • Js表格万条数据瞬间加载实现代码 2014-05-09

    一条数据创建一行,如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天,下面有个不错的方法,大家可以参考下 Js表格,万条数据瞬间加载 在Ajax动态加载数据的实际应用中,大家都习惯了一种思维方式:一条数据创建一行. 于是如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天 受Flex的DataGrid控件的启发,在Flex的DataGrid控件中,展示数据的方法并不是有多少条数据就创建多少行,它最多只创建你在界面上所看到的十几二十行(假设为n行),如果数据多的话,在滚动过程中,

  • 使用js声明数组,对象在jsp页面中(获得ajax得到json数据) 2014-08-07

    使用js声明数组,对象在jsp页面中(获得ajax得到json数据).需要的朋友可以过来参考下,希望对大家有所帮助 1.在jsp页面的js中可以用jsp标签 var patientInfoList={patientId:"${session.patientId}"}; var docDepList=[],noTypeMap=["","普通号","主治医生号","副主任医师号","主任医师号&quo