• JSON 和 JavaScript eval


      JSON (JavaScript Object Notation) 一种轻量级的数据交换格式,比 XML 更轻巧,JSON 是JavaScript 原生格式,这意味着 JavaScript 中处理 JSON 数据不需要任何 API 和工具包。

      JSON 格式可以使对象(object)、数组(array)、值(value)、字符串(string)、数值(number)。

      

    代码
     1 <script type="text/javascript">
     2     var user = {
     3         "Name":"Andy",
     4         "Sex" :"man",
     5         "Age" :"20",
     6         "Phone":{"mobilephone":"123456789","telephone":"1234-12345678"},
     7         "baby":[{"big":"xiaohong"},{"middle":"xiaoming"},{"small":"xiaoli"}] //包含数组
     8     }
     9     alert(user.Name);
    10     alert(user.Phone.mobilephone);
    11     alert(user.baby[0].big);
    12     user.baby[0].big = "--";//修改了 JSON 值
    13     alert(user.baby[0].big);
    14 </script>
     

    参考:http://www.json.org/json-zh.html

      下面来看看 JavaScript 的 eval  函数。

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

    代码
    <script type="text/javascript">
        
    var bar = "bar";
        
    var foobar = eval('"foo"+bar');
        alert(bar 
    + foobar);//执行语句

        foobar 
    = eval('if(bar = "bar"){bar = "foo-bar";}else{bar = "bar-foo";}');
        alert(foobar);
    //返回语句中包含的值
    </script>

      JSON 和 对象字面量(Object Literals)的区别:JSON 的名字部分严格用引号+名字来表示。

     代码

    <script type="text/javascript">
        
    //对象字面量
        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"
                }
            ]
        };
    </script>

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

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

  • 相关阅读:
    使用math.js进行javascript精确计算
    SpringMVC java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name
    MAC系统下配置环境变量
    javaURL中文乱码的问题
    Mac系统搭建java开发环境
    mysql 删除重复数据保留只保留一条
    SSM 加载配置文件
    CSS3实现元素旋转
    CSS3实现圆角效果
    CSS3 -web-box-shadow实现阴影效果
  • 原文地址:https://www.cnblogs.com/lee0201/p/1756700.html
Copyright © 2020-2023  润新知