Json數據結構認識


JSON是一種輕量級的,基於文本的數據交換格式,僅僅靠特定的字符格式就能很方便的傳遞字符信息,以下對JSON詳細解讀。

JSON:

全稱:“JavaScript Object Notation”,(JavaScript 對象表示法),一種基於文本,獨立於語言的輕量級數據交換格式,在我看來JSON的特性就是簡潔,用處廣泛,在我接觸到的各個語言都有使用,可以跨平台使用,不存在通常意義上的字符格式問題。XML也是一種數據交換格式,不過XML標記比較多,往往使得標記比需要傳遞的數據都還多,這樣會增加字符傳輸的負擔。因此,若是能使用JSON的時候,我們更傾向於使用JSON。下面簡單的說明下JSON

JSON規定的格式:
1)數據在鍵值對中
2) 數據由逗號分隔
3) 花括號保存對象
4) 方括號保存數組


JSON的兩種結構:

JSON可以有兩種表示結構:對象和數組
對象結構以"{"大括號開始,以"}"大括號結束。中間部分由以","來分割開鍵值對(key/value)代碼表示如下:
[html] view plain copy
 
  1. {  
  2.      key1:value1,     
  3.      key2:value2,   
  4.          ...  
  5. }  
 
        
其中:關鍵字需要是字符串,而值可以是其他任何數據,比如:字符串,數值,布爾值,對象或者是null。
 
數組結構以"["方括號開始,"]"方括號結束。中中間部分由以","來分割對象。代碼表示如下:
[html] view plain copy
 
  1. [     
  2.    {    
  3.      key1:value1,    
  4.      key2:value2    
  5.   },   
  6.   {   key3:value3,  
  7.        key4:value4     
  8.   }  
  9. ]  


這樣說比較空泛,用編程語言類比:兩種結構的具體區別在於取值方式不同。對象是用{}包括起來的數據,比如{"key":"1024","key2":"2048"}.這樣可以理解為string key="1024",string key2="2048"。需要取值的時候,就按照對應的鍵取對應的值。而對於數組結構,可以理解為["value","key","test"],這種結構,取值和數組一樣,按索引
取值。總的來說,混合應用時,對象保存一個對象的信息,數組保存多個對象。


Json實際使用:


一般來說,實際使用的Json是數組加對象組成的數據結構。
下面由簡單到復雜的json舉例:
對於最簡單的JSON。可以使用下面的數據結構:
[html] view plain copy
 
  1. {"firstKey":"Citron"}  
如以上我說的,這個例子相當於:firstKey=Citron;
[html] view plain copy
 
  1. {  
  2.    "firstkey":"Citron",  
  3.    "address":"BeiJing",  
  4.    "phoneNum":"111"  
  5.   
  6. }  
只是添加了花括號,添加了特定的格式,便變成了Json,這樣的數據結構,具有更加容易讀取,格式更加統一,如以上列子中,一眼便能看出來這是關於一個人的信息。
但是如果需要傳遞的一串數據是很多個人的信息呢?這就是數組和對象混合使用方式:
[html] view plain copy
 
  1. {  
  2.     "people":[  
  3.         {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},  
  4.         {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},  
  5.         {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}  
  6.     ]  
  7. }  
對以上示例的解析:在一個名為people的數組中,保存着3組數據,每組數據包含一個人的姓,名,email。
問題又來了,people這個詞太寬泛,如果我還想對它分類,按職業分類,再傳遞怎么辦。
解決方法:傳遞一個對象,這個對象包含多個職業的數組,每個職業數組里面包含不同的人對象,每個人對象里面包含這個人的信息。

[html] view plain copy
 
  1. {  
  2.     "programmers": [{  
  3.         "firstName": "Brett",  
  4.         "lastName": "McLaughlin",  
  5.         "email": "aaaa"  
  6.     }, {  
  7.         "firstName": "Jason",  
  8.         "lastName": "Hunter",  
  9.         "email": "bbbb"  
  10.     }, {  
  11.         "firstName": "Elliotte",  
  12.         "lastName": "Harold",  
  13.         "email": "cccc"  
  14.     }],  
  15.     "authors": [{  
  16.         "firstName": "Isaac",  
  17.         "lastName": "Asimov",  
  18.         "genre": "sciencefiction"  
  19.     }, {  
  20.         "firstName": "Tad",  
  21.         "lastName": "Williams",  
  22.         "genre": "fantasy"  
  23.     }, {  
  24.         "firstName": "Frank",  
  25.         "lastName": "Peretti",  
  26.         "genre": "christianfiction"  
  27.     }],  
  28.     "musicians": [{  
  29.         "firstName": "Eric",  
  30.         "lastName": "Clapton",  
  31.         "instrument": "guitar"  
  32.     }, {  
  33.         "firstName": "Sergei",  
  34.         "lastName": "Rachmaninoff",  
  35.         "instrument": "piano"  
  36.     }]  
  37. }  


免責聲明!

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



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