AJAX即“Asynchronous JavaScript and XML”(異步JavaScript和XML)以后會被改為Ajaj(Asynchronous JavaScript and object notation)這個很難說啊!!
說到JSon,那當然要提及xml,XML是進行數據交換的標准方式這種用於表示客戶端與服務器間數據交換有效負載的格式,幾乎已經成了Web services的同義詞。我們知道AJAX技術能夠使得每一次請求更加迅捷,對於每一次請求返回的不是整個頁面,也僅僅是所需要返回的數據。然而,由於Ajax和REST技術的出現影響了應用程序架構,這迫使人們開始尋求`XML的替代品。
JSON的優點
- 輕量級的數據交換格式
- 人們讀寫更加容易
- 易於機器的解析和生成
- 能夠通過JavaScript中eval()函數解析JSON
- JSON支持多語言。包括:ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua.
JSON語法是一種用於傳輸和生成數據的協定,很類似於C家族的語言,所以很容易被C家族的語言所解析。
對象:對象包含再{}之間
屬性:采用Key-Value對來表示。屬性之間使用逗號分開。 string : value
數組:數組存放再[]之間 [ elements ]
元素:元素之間用逗號分開
值:值可以是字符串,數字,對象,數組,true,false,null
<?xml version='1.0' encoding='UTF-8'?>
<card>
<fullname>Sean Kelly</fullname>
<org>SK Consulting</org>
<emailaddrs>
<address type='work'>http://www.cnblogs.com/smallcup/</address>
<address type='home' pref='1'>http://www.cnblogs.com/smallcup/</address>
</emailaddrs>
<telephones>
<tel type='work' pref='1'>+1 214 555 1212</tel>
<tel type='fax'>+1 214 555 1213</tel>
<tel type='mobile'>+1 214 555 1214</tel>
</telephones>
<addresses>
<address type='work' format='us'>1234 Main St
Springfield, TX 78080-1216</address>
<address type='home' format='us'>5678 Main St
Springfield, TX 78080-1316</address>
</addresses>
<urls>
<address type='work'>http://www.cnblogs.com/smallcup/</address>
<address type='home'>http://www.cnblogs.com/smallcup/</address>
</urls>
</card>
而使用JSON來表達,上面的形式將變成如下模樣:
{
"fullname": "Sean Kelly",
"org": "SK Consulting",
"emailaddrs": [
{"type": "work", "value":http://www.cnblogs.com/smallcup/"},
{"type": "home", "pref": 1, "value": "http://www.cnblogs.com/smallcup/"}
],
"teleph [
{"type": "work", "pref": 1, "value": "+1 214 555 1212"},
{"type": "fax", "value": "+1 214 555 1213"},
{"type": "mobile", "value": "+1 214 555 1214"}
],
"addresses": [
{"type": "work", "format": "us",
"value": "1234 Main StnSpringfield, TX 78080-1216"},
{"type": "home", "format": "us",
"value": "5678 Main StnSpringfield, TX 78080-1316"}
],
"urls": [
{"type": "work", "value": "http://www.cnblogs.com/smallcup/"},
{"type": "home", "value": "http://www.cnblogs.com/smallcup/"}
]
}
正如你所見,JSON也提供了一種具有嵌套數據元素的結構,就象XML一樣。與XML一樣,JSON也是基 於文本的,且它們都使用Unicode編碼,且其與XML一樣具有可讀性。主觀上來看,JSON更為清晰且冗余更少些。JSON網站提供了對JSON語法 的嚴格描述,只是描述較簡短。從總體來看,XML比較適合於標記文檔,而JSON卻更適於進行數據交換處理。一個JSON文檔的每一個實例都負責描述一個對象—具體的描述是通過使用嵌套的對象,數組,字符串,數字,布爾值或null值來實現的。
下面比較一下兩者的平衡度:
- 可讀性 JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規范的標簽形式,很難分出勝負。
- 可擴展性 XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,JSON不能的。
- 編碼難度 XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多。
- 解碼難度 XML的解析得考慮子節點父節點,讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點XML輸的真是沒話說。
- 流行度 XML已經被業界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域。
JSON的基本思想是,把自己實現為JavaScript(和Pyth 2.0開發中XML數據操作的主要替代者)。任何開發者,無論是開發標准桌面應用程序還是開發Web應用程序,只要使用XML數據處理,都會欣賞JSON的簡易特征。最后祝願大家能更好的理解使用Json。
(說明:本文由作者自己通過自己的學習和對各位前輩的總結寫的這邊文章)