`
dreamoftch
  • 浏览: 485042 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

json eval

    博客分类:
  • json
阅读更多

http://www.jb51.net/article/21688.htm

如果您想详细了解eval和JSON请参考以下链接:

eval :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval

JSON:http://www.json.org/

eval函数的工作原理

eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。

举例说明

    eval评估JavaScript表达式

    var bar = 'bar';
    var foobar = eval('"foo" + bar');
    alert(foobar);


    eval评估JavaScript语句

    var bar = 'bar';
    // if variable bar equals 'bar', foobar is the result of
    // last executing statement: bar="foo-bar";
    var foobar = eval('if(bar == "bar") {bar="foo-bar";} else {bar = "bar-foo";}');
    alert(foobar);// change the valuebar = 'foo';
    // now our the last executed statement is: bar = "bar-foo";
    // therefore the value of variable foobar has been changed
    // into 'bar-foo'
    foobar = eval('if(bar == "bar") {bar="foo-bar";} else {bar = "bar-foo";}');
    alert(foobar);


JSON的格式

JSON的格式是由大括号和由冒号(:)构成的名值对所组成的。注意JSON格式与对象字面量 (object literals) 的区别:JSON的名字部分严格用引号+名字来表示。

举例说明

    对象的字面量

    var objectLiteral = {
      name: "Objector.L",
      age: "24",
      special: "JavaScript",
      sayName: function() {
        return this.name;
      }
    };


    JSON对象

    var jsonFormat = {
      "summary": "Blogs",
      "blogrolls": [
        {
           "title": "Explore JavaScript",
           "link": "http://example.com/"
        },
        {
           "title": "Explore JavaScript",
           "link": "http://example.com/"
        }
      ]
    };


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]


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


结论

理解eval的工作原理和json的严格的限定格式,合理结合eval和json应用于JavaScript的数据传递和对象转换。

following this format:

eval('{' + jsonString + ')');

分享到:
评论

相关推荐

    js使用eval解析json(js中使用json)

    eval的用法eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句,下面给出eval解析json的示例

    JS使用eval解析JSON的注意事项分析

    本文较为详细的分析了JS使用eval解析JSON的注意事项。分享给大家供大家参考,具体如下: 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数。 2. 使用Function对象来进行...

    jquery eval解析JSON中的注意点介绍

    使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用...

    javascript eval和JSON

    javascript eval和JSON之间的联系

    巧用eval解析json对象

    NULL 博文链接:https://toyota2006.iteye.com/blog/266116

    javascript中eval解析JSON字符串

    我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法,我们可以用 eval() 函数。 var str = '{"name": "hanzichi", "age": 10}'; var obj = eval('...

    JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析

    在Javascript使用eval将接送转化为json对象 var jsonData = '{"persons":{"name":"成龙","age":58},{"name":"吴京","age":33},"name":"甄子丹","age":44}'; var jsonObj = eval('('+jsonData+')'); //访问...

    JSON2.JS JSON.JS JSON_PARSE.JS

    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 ...

    json2 json

    使用thisfile recommended.json_parse.js:该文件包含替代JSON的parse函数thatuses递归下降而不是eval.json_parse_state.js:此文件包含替代JSON的parse函数thatuses状态机器代替eval.cycle.js:这个文件包含了两个...

    json2.js 字符串转转json对象工具

    json字串 解析成jsonObject的工具,替代eval方法使用 IE8以上浏览器貌似自带 JSON.stringify

    json2 js json格式处理包

    parse方法使用eval方法进行解析,并使用几个正则表达式对其进行保护意外的代码执行风险。在当前的浏览器上,这个文件什么都不做,更喜欢内置的JSON对象。没有理由使用这个文件,除非命运迫使你支持IE8,这是没有人...

    js下用eval生成JSON对象.docx

    js下用eval生成JSON对象.docx

    javascript中eval解析JSON字符串.docx

    javascript中eval解析JSON字符串.docx

    JSON入门与实战

    JSON(JavaScript Object ...规范描述出的字符串已是 JavaScript 的原生代码串,这使之能通过 eval 动态 的在 JSON 串与 JavaScript 对象之间进行转换。如果夸大来说,它是另一种理想 的但 有别于 XML 数据交换语言。

    json的介绍 以及 json2.js的用法

    为了将JSON文本转换为对象,可以使用eval()函数。eval()函数调用JavaScript编辑器。由于 JSON是JavaScript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免 产生...

    json字符串和js对象之间的转换

    json字符串和js对象之间的转换,包括eval、parseJSON函数、JSON.parse、$.toJSON、$.parseJSON、复杂的json格式对象使用,让你一分钟理解json的那些事

    json tree代码demo

    var strjson = eval('('+json.treeJsonStr+')'); $('#typetree').tree({ checkbox: false, data:json.jsonList, //data:strjson, onClick:function(node){ $(this).tree('toggle', node.target); ...

    js使用eval解析json实例与注意事项分享

    eval函数在js中有不少用处了,下面我来给各位朋友介绍eval解析json的实例,基于这个实例我们引出来在eval处理json数据时的一些注意事项,希望文章对各位同学会有所帮助

Global site tag (gtag.js) - Google Analytics