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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM