• json2学习笔记


    
    

    一、参考资料:

      url-1:http://baike.baidu.com/view/136475.htm

      url-2:http://www.cnblogs.com/beijia/archive/2011/10/05/json2.html

      url-3:http://wenku.baidu.com/view/202947649b6648d7c1c746fc.html

    二、参考百度百科中对json的解释:  

      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构

      JSON建构有两种结构:  

      1. 对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。 

      2. 数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。 

      经过对象、数组2种结构就可以组合成复杂的数据结构了。

      3. eg:

      { "people": [ 

       { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

       { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } 

      ]}

     

    ------------------------------------------------

      博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
    店名:
      小鱼尼莫手工饰品店
    经营:
      发饰、头花、发夹、耳环等(手工制作)
    网店:
      http://shop117066935.taobao.com/

      ---------------------------------------------------------------------

    继续正题... 

      

    三、json2.js的使用

      下载地址:http://ishare.iask.sina.com.cn/download/explain.php?fileid=9897216 

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

    四、json2学习

      先列出两个demo代码,再进行分析

    • demo_A
    <!DOCTYPE html>
    <html>
    <head>
        <script src="js/json2.js" type="text/javascript"></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对象  /*将普通字符串转化为json对象*/
        var myE = eval(normalstring); 
        //将json对象转换为字符串 
        var text = JSON.stringify(myE); 
       
        //JSON解析                  /*将json格式文本解析为json对象*/
        var myData = JSON.parse(jsontext);
        
        //对比声明的文本与转换后的json文本区别: 
      document.writeln('声明的普通格式文本normalstring = <br>'+normalstring+'<br><br>声明的json格式文本jsontext = <br>'+jsontext+'<br><br>转换后的json文本(先eval转json对象,再JSON.stringify转字符串):<br>'+text+'<br>');
    
        </script>
    </body>
    </html>

    运行结果:   

    声明的普通格式文本normalstring = 
    [{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]
    声明的json格式文本jsontext = 
    [{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]
    
    转换后的json文本(先eval转json对象,再JSON.stringify转字符串):
    [{"persons":[{"name":"jordan","sex":"m","age":"40"},{"name":"bryant","sex":"m","age":"28"},{"name":"McGrady","sex":"m","age":"27"}]}]
    

     分析:

      1.代码中直接声明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"
       

      2.对比声明字符串normalstring和json格式文本jsontext(从代码结果中查看区别)

      3.使用eval()函数调用JavaScript的编译器把JSON文本转变成对象。因为JSON是JavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。因而eval函数将一般字符串转换为json对象:var myE = eval(normalstring);

      4.使用JSON.stringify(),将json对象转换为字符串:var text = JSON.stringify(myE);

      5.转换后的json文本和声明的json格式文本内容是相同的。

      另外:当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构:

        var myData = JSON.parse(jsontext);

    • Demo_B
    <!DOCTYPE html>
    <html>
    <head>
        <script src="js/json2.js" type="text/javascript"></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);//数组最前面加一条记录
        jsonObj2.persons.splice(0,2);    //开始位置,删除个数 ,eg:含有1234,则删除1、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);//开始位置,删除个数为0,插入对象 
       
        //替换并删除 
        jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数为1,插入对象
        
        //json对象的遍历显示
        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);
    
        //json长度
        document.writeln("<br/>length= " + persons.length);
        </script>
    </body>
    </html>

    运行结果:

    tom'sex is m and age is 24
    Mike'sex is m and age is 29
    tom'sex is m and age is 24
    Mike'sex is m and age is 29
    tom'sex is m and age is 24
    {"persons":[{"name":"tom","sex":"m","age":"24"},{"name":"Mike","sex":"m","age":"29"},{"name":"tom","sex":"m","age":"24"},{"name":"Mike","sex":"m","age":"29"},{"name":"tom","sex":"m","age":"24"}]} 
    length= 5
    

    分析:

      1.实例B中使用了A中JSON.stringify()方法,将json对象转换为json格式文本: var myjsonobj = JSON.stringify(jsonObj2); 

      2.演示了对json对象操作的几种方法:

      .push();         //数组最后加一条记录 
      .pop();            //删除最后一项 
      .shift();          //删除第一项 
      .unshift(person);  //数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!
      .splice(1,0,self,brother,self);   //替换不删除:开始位置,删除个数为0,插入对象 
      .splice(0,1,self,brother);        //替换并删除:开始位置,删除个数为1,插入对象
    

    、总结

      综上,引入json2,可以看做为实现普通文本字符串normalstring、json对象jsonObj、json格式字符串之间的转换,其中常用方法有:

      eval(normalstring); 

      JSON.stringify(jsonObj);

      JSON.parse(jsontext);

    店名:
      小鱼尼莫手工饰品店
    经营:
      发饰、头花、发夹、耳环等(手工制作)
    网店:
      http://shop117066935.taobao.com/

  • 相关阅读:
    泛型-----------C#
    wpf风格的数据绑定------WPF
    wpf引用外部样式及外部样式的复杂写法--------WPF
    线程的最简易写法-------------android
    Fragment的用法(类似于.net的用户控件,重用性好)。。。。---------------android
    写一个事件(不仅仅是为控件添加事件)------------C#
    页面跳转(带返回参数的)---------android
    构造函数(构造器)的正确重载方式------类
    利用 CSS3 判断手机是横屏还是竖屏
    AngularJS Or jQuery 省份城市二级联动下拉功能
  • 原文地址:https://www.cnblogs.com/qiongmiaoer/p/2844763.html
Copyright © 2020-2023  润新知