一、json
首先以我所学简单介绍一下json的基本内容
从定义上来说,json是一门轻量级的数据交换格式,便于阅读与编写,同时也易于机器解析和生成。
JSON的结构我只介绍一种,如下:
“名称/值”这种“键值对”的形态。
举例:object,object以{}为开始和结束,{string:key,string:key……},每一个名称后跟':',每一个“键值对”以‘,’分隔。
如:{name:"tom",age:"24",...}
array,以[]为开始和结束,如存放的是object,每一个object用","分隔。
如:[{name:"tom",age:"24",...},{...},{...},...]
array中可以存放的数据类型:string、number、boolean、null等基本数据结构外,还可以存放 object、array。
string,以""为开始和结束,与java的字符串非常相似,如果字符串中有某些符号,需要用"\"来进行转译。
以js代码的形式创建json对象,一定要注意和js中的对象字面量书写的区别,就是,json对象中name部分需要用""括起来,如下:
var jsonDemo = {
"name":"zhang",
"age":"24",
"array":["book":"english","tel": "111", "cellphone": "222"]
};
二、eval
作为javascript的全局方法,它将执行一个javaScript代码的字符串。如果code含有一个表达式,eval()将计算这个表达式,并返回它的值。如果code含有一个或多个javascript语句,eval()将执行这些语句,如果最后一个语句有返回值,它还会返回这个值。如果code没有任何返回值,eval()将返回undefined。eval()常见的方法是编写作为递归的javascript解释器的程序,或者编写动态生成并计算javascript代码程序。最后,要注意的是,当打算传递给eval()原始字符串值时,不要粗心地给它传递String对象。
eval和JSON
由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法。在转化的时候需要将JSON字符串的外面包装一层圆括号:
var jsonObject = eval("(" + jsonFormat + ")");
为什么要加括号?
加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。
JSON格式的名字部分为什么要加引号?
因为eval函数会将{foo:"bar"}解释成合法的JavaScript语句,而非表达式。但是人们往往想要的是让eval将这段代码解释成一个对象。所以JSON格式会强制你去在名字的外侧加上引号再结合圆括号,这样eval就不会错误的将JSON解释成代码块。
举例说明
eval错误解析语义
alert(eval('{foo:"bar"}')); // return "bar", incorrect
eval正确解析JSON
alert(eval('({"foo": "bar"})')); // return JSON object, correct
分享到:
相关推荐
javascript eval和JSON之间的联系
NULL 博文链接:https://toyota2006.iteye.com/blog/266116
js下用eval生成JSON对象.docx
javascript中eval解析JSON字符串.docx
我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法,我们可以用 eval() 函数。 var str = '{"name": "hanzichi", "age": 10}'; var obj = eval('...
eval的用法eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句,下面给出eval解析json的示例
eval函数在js中有不少用处了,下面我来给各位朋友介绍eval解析json的实例,基于这个实例我们引出来在eval处理json数据时的一些注意事项,希望文章对各位同学会有所帮助
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,...
在Javascript使用eval将接送转化为json对象 var jsonData = '{"persons":{"name":"成龙","age":58},{"name":"吴京","age":33},"name":"甄子丹","age":44}'; var jsonObj = eval('('+jsonData+')'); //访问...
json2.js: This file creates a JSON property in the global object, if there isn't already one, setting its value to an object containing a stringify method and a parse method. The parse method uses ...
eval-json-path 评估/查询给定路径下json对象的值 通常,可以通过属性名称或索引来访问js对象变量。 该模块允许按字符串给出的路径/步骤进行访问 用法 const evalJsonPath = require ( 'eval-json-path' ) const ...
使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用...
如果您想详细了解eval和JSON请参考以下链接: eval :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval JSON:http://www.json.org/ eval函数的工作原理 eval函数会评估一个...
在使用eval生成JSON对象时,一定要注意添加一对圆括号
使用thisfile recommended.json_parse.js:该文件包含替代JSON的parse函数thatuses递归下降而不是eval.json_parse_state.js:此文件包含替代JSON的parse函数thatuses状态机器代替eval.cycle.js:这个文件包含了两个...
由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法...
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧,下面通过本文给大家介绍JS中Eval解析JSON字符串的一个小问题,需要的朋友参考下吧