JSON(JavaScript Object Notation(記號、標(biāo)記))是一種輕量級的數(shù)據(jù)交換格式季春。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集洗搂。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言耘拇。JSON易于人閱讀和編寫撵颊,同時也易于機器解析和生成的。
一惫叛、JSON和XML的比較
1倡勇、可讀性
JSON和XML的可讀性可謂不相上下,一邊是簡易的語法嘉涌,一邊是規(guī)范的標(biāo)簽形式妻熊,很難分出勝負(fù)。
2仑最、可擴展性
XML天生有很好的擴展性扔役,JSON當(dāng)然也有,不過JSON在Javascript主場作戰(zhàn)警医,可以存儲Javascript復(fù)合對象亿胸,有著xml不可比擬的優(yōu)勢。
3预皇、編碼難度
XML有豐富的編碼工具侈玄,比如Dom4j、JDom等吟温,JSON也有提供的工具拗馒。無工具的情況下,相信熟練的開發(fā)人員一樣能很快的寫出想要的xml文檔和JSON字符串溯街,不過,xml文檔要多很多結(jié)構(gòu)上的字符洋丐。
4呈昔、解碼難度
json簡單說就是javascript中的對象和數(shù)組,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu)友绝,通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)堤尾。
? ? ? ? ? 1、對象:對象在js中表示為“{}”括起來的內(nèi)容迁客,數(shù)據(jù)結(jié)構(gòu)為{key:value,key:value,...}的鍵值對的結(jié)構(gòu)郭宝,在面向?qū)ο蟮恼Z言中,key為對象的屬性掷漱,value為對應(yīng)的屬性值粘室,所以很容易理解,取值方法為對象.key獲取屬性值卜范,這個屬性值的類型可以是數(shù)字衔统、字符串、數(shù)組、對象幾種锦爵。對象是一個無序的“‘名稱/值’對”集合舱殿。
(1)一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束险掀。
(2)每個“名稱”后跟一個“:”(冒號)沪袭;
(3)“‘名稱/值’對”之間使用“,”(逗號)分隔。
舉例1:
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
? ? ? ? ? ?2樟氢、數(shù)組:數(shù)組在js中是中括號“[]”括起來的內(nèi)容冈绊,數(shù)據(jù)結(jié)構(gòu)為["java","javascript","vb",...],取值方式和所有語言中一樣嗡害,使用索引獲取焚碌,字段值的類型可以是 數(shù)字、字符串霸妹、數(shù)組十电、對象幾種。數(shù)組是值(value)的有序集合叹螟。
(1)一個數(shù)組以“[”(左中括號)開始鹃骂,“]”(右中括號)結(jié)束。
(2)值之間使用“,”(逗號)分隔罢绽。
經(jīng)過對象畏线、數(shù)組2種結(jié)構(gòu)就可以組合成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)了。
舉例2:
? ? ? 包含三個People對象良价,這三個對象放在一個數(shù)組中寝殴。
{
? ? ? ? "people":[
? ? ? ? ? ? ? ? ? ? ? ?{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
? ? ? ? ? ? ? ? ? ? ? ? ?{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
? ? ? ? ? ? ? ? ? ? ? ? ?{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
?l???S?