zoukankan      html  css  js  c++  java
  • json2.js的初步学习与了解(转)

    转载来源:http://apps.hi.baidu.com/share/detail/6092406

    json2.js的初步学习与了解

    1.)该js的下载地址是:http://www.json.org/json2.js

    2.)在页面中引用该脚本:<script type="text/javascript" src="js/json2.js"></script>

    3.)示例演示一:
    //直接声明json数据结构
    var myJSONObject = {"bindings": [
            {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
            {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
            {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
        ]
    };

    这个例子中,创建了一个对象,它只包含一个成员“bindings”。“bindings”是一个包含了3个对象的数组,而这每个对象都有"ircEvent"、"method"和"regex"3个成员。

    这些成员可以用“.”或subscript 操作得到。

    如:myJSONObject.bindings[0].method    // "newURI"
        myJSONObject.bindings[1].deleteURI    // "newURI"
       
    //声明字符串,可对比一下json文本与我们正常文本的区别
    var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';
    var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';

    我们可以使用eval()函数调用JavaScript的编译器把JSON文本转变成对象。因为JSON是JavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。

    //调用eval函数转换为json对象,
    var myE = eval(normalstring);

    //将json对象转换为字符串
    var text = JSON.stringify(myE);

    //对比转换后的json文本与声明的文本区别
    document.writeln('转换后的json文本:'+text+'<br><br>声明的json格式文本 '+jsontext+'<br><br>声明的普通格式文本 '+normalstring+'<br><br>');

    结果如下:

    转换后的json文本:[{"persons":[{"name":"jordan","sex":"m","age":"40"},{"name":"bryant","sex":"m","age":"28"},{"name":"McGrady","sex":"m","age":"27"}]}]

    声明的json格式文本 [{"persons":[{"name":"jordan","sex":"m","age":"40"},{"name":"bryant","sex":"m","age":"28"},{"name":"McGrady","sex":"m","age":"27"}]}]

    声明的普通格式文本 [{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]

    小结:转换后的json文本和声明的json格式文本内容是相同的。

    //当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构
    var myData = JSON.parse(jsontext);

    完整的文件如下(区别:myJSONObject,jsontext,normalstring的不同):
    <%@ page language="java" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
       <script type="text/javascript" src="js/json2.js"></script>
    </head>

    <body>
       <script>
        var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';
        var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
        var myJSONObject = {"bindings": [
              {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
              {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
              {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
           ]
        };
       
        //调用eval函数转换为json对象,
        var myE = eval(normalstring);
       
        //将json对象转换为字符串
        var text = JSON.stringify(myE);
       
        //对比转换后的json文本与声明的文本区别
        document.writeln('转换后的json文本:'+text+'<br><br>声明的json格式文本 '+jsontext+'<br><br>声明的普通格式文本 '+normalstring+'<br><br>');
      
        //JSON解析
        var myData = JSON.parse(jsontext);
       </script>
    </body>
    </html>


    4.)示例演示二:

    //下面是对json对象的增删查改操作
    <%@ page language="java" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
       <script type="text/javascript" src="js/json2.js"></script>
    </head>

    <body>
       <script>
        //声明json对象
        var jsonObj2={persons:[
         {name:"jordan",sex:"m",age:"40"},
         {name:"bryant",sex:"m",age:"28"},
         {name:"McGrady",sex:"m",age:"27"}
        ]};
        var persons=jsonObj2.persons;
        var str="";
        var person={name:"yaoMing",sex:"m",age:"26"};
       
        //以下为json对象的操作,去掉注释可以查看操作结果
        jsonObj2.persons.push(person);//数组最后加一条记录
        jsonObj2.persons.pop();//删除最后一项
        jsonObj2.persons.shift();//删除第一项
        jsonObj2.persons.unshift(person);//数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除
        jsonObj2.persons.splice(0,2);//开始位置,删除个数
       
        //替换不删除
        var self={name:"tom",sex:"m",age:"24"};
        var brother={name:"Mike",sex:"m",age:"29"};
        jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数,插入对象
       
        //替换并删除
        jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象
       
        for(var i=0;i<persons.length;i++){
         var cur_person=persons[i];
         str+=cur_person.name+"'sex is "+cur_person.sex+" and age is "+cur_person.age+"<br><br>";
        }
        document.writeln(str);
        //转换为json文本
        var myjsonobj = JSON.stringify(jsonObj2);
        document.writeln(myjsonobj);

        document.writeln(persons.length);

       </script>
    </body>
    </html>

  • 相关阅读:
    [POJ2104]K-th Number(区间第k值 记录初始状态)
    [POJ2007]Scrambled Polygon(计算几何 极角排序)
    [POJ1269]Intersecting Lines (计算几何)
    [POJ2318]TOYS (计算几何 行列式(叉乘)+二分)
    [HDOJ1394]Minimum Inversion Number(线段树,逆序数)
    Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学题
    BZOJ 1934 [Shoi2007]Vote 善意的投票 最小割
    BZOJ 1055 区间DP
    HDU4267 树状数组 不连续区间修改(三维)
    HDU 3308 线段树单点更新+区间查找最长连续子序列
  • 原文地址:https://www.cnblogs.com/lovenan/p/2806922.html
Copyright © 2011-2022 走看看