java ee第七週 json

  JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式。它基於 ECMAscript(歐洲計算機協會制定的js規範)的一個子集,採用徹底獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提高網絡傳輸效率。javascript

  在 JS 語言中,一切都是對象。所以,任何支持的類型均可以經過 JSON 來表示,例如字符串、數字、對象、數組等。可是對象和數組是比較特殊且經常使用的兩種類型。
對象:對象在 JS 中是使用花括號包裹 {} 起來的內容,數據結構爲 {key1:value1, key2:value2, ...} 的鍵值對結構。在面向對象的語言中,key 爲對象的屬性,value 爲對應的值。鍵名可使用整數和字符串來表示。值的類型能夠是任意類型。
數組:數組在 JS 中是方括號 [] 包裹起來的內容,數據結構爲 ["java", "javascript", "vb", ...] 的索引結構。在 JS 中,數組是一種比較特殊的數據類型,它也能夠像對象那樣使用鍵值對,但仍是索引使用得多。一樣,值的類型能夠是任意類型。
  簡單地說  [1]  ,JSON 能夠將 JavaScript 對象中表示的一組數據轉換爲字符串,而後就能夠在網絡或者程序之間輕鬆地傳遞這個字符串,並在須要的時候將它還原爲各編程語言所支持的數據格式,例如在 PHP 中,能夠將 JSON 還原爲數組或者一個基本對象。在用到AJAX時,若是須要用到數組傳值,這時就須要用JSON將數組轉化爲字符串
 
和XML進行比較:

可讀性

JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規範的標籤形式,很難分出勝負。

可擴展性

XML天生有很好的擴展性,JSON固然也有,沒有什麼是XML能夠擴展而JSON卻不能擴展的。不過JSON在Javascript主場做戰,能夠存儲Javascript複合對象,有着xml不可比擬的優點。

編碼難度

XML有豐富的編碼工具,好比Dom4j、JDom等,JSON也有提供的工具。無工具的狀況下,相信熟練的開發人員同樣能很快的寫出想要的xml文檔和JSON字符串,不過,xml文檔要多不少結構上的字符。

解碼難度

XML的解析方式有兩種:
一是經過文檔模型解析,也就是經過父標籤索引出一組標記。例如:xmlData.getElementsByTagName("tagName"),可是這樣是要在預先知道文檔結構的狀況下使用,沒法進行通用的封裝。
另一種方法是遍歷節點(document 以及 childNodes)。這個能夠經過遞歸來實現,不過解析出來的數據仍舊是形式各異,每每也不能知足預先的要求。
凡是這樣可擴展的結構數據解析起來必定都很困難。
JSON也一樣如此。若是預先知道JSON結構的狀況下,使用JSON進行數據傳遞簡直是太美妙了,能夠寫出很實用美觀可讀性強的代碼。若是你是純粹的前臺開發人員,必定會很是喜歡JSON。可是若是你是一個應用開發人員,就不是那麼喜歡了,畢竟xml纔是真正的結構化標記語言,用於進行數據傳遞。
而若是不知道JSON的結構而去解析JSON的話,那簡直是噩夢。費時費力不說,代碼也會變得冗餘拖沓,獲得的結果也不盡人意。可是這樣也不影響衆多前臺開發人員選擇JSON。由於json.js中的toJSONString()就能夠看到JSON的字符串結構。固然不是使用這個字符串,這樣仍舊是噩夢。經常使用JSON的人看到這個字符串以後,就對JSON的結構很明瞭了,就更容易的操做JSON。
以上是在Javascript中僅對於數據傳遞的xml與JSON的解析。在Javascript地盤內,JSON畢竟是主場做戰,其優點固然要遠遠優越於xml。若是JSON中存儲Javascript複合對象,並且不知道其結構的話,我相信不少程序員也同樣是哭着解析JSON的。
除了上述以外,JSON和XML還有另一個很大的區別在於有效數據率。JSON做爲數據包格式傳輸的時候具備更高的效率,這是由於JSON不像XML那樣須要有嚴格的閉合標籤,這就讓有效數據量與總數據包比大大提高,從而減小同等數據流量的狀況下,網絡的傳輸壓力  [2]  。
 
參考網站:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
相關文章
相關標籤/搜索