• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 首頁 > hot資訊 > XML和JSON對比分析

    XML和JSON對比分析

    更新時間:2020-11-27 17:33 瀏覽106次 來源:動力節點

     正如我們所知,XML和JSON 是現今互聯網中最常用的兩種數據交換格式。XML和JSON都是經過時間上和技術上的檢驗才得到如今的地位,初學Java的我們在現實開發中到接觸XML和JSON時很容易混淆,那么XML和JSON到底有何不同呢?本文我們就來對比一下XML和JSON,看看XML和JSON的區別。

     

    XML格式最早是由W3C 于1996年提出。JSON 格式由Douglas Crockford于2002年提出。雖然這兩種格式的設計目標并不相同,但它們常常用于同一個任務,也就是數據交換中。XML 和 JSON 的文檔都很完善,且都同時具有人類可讀性和機器可讀性。不以成敗論英雄,事實上,這兩種格式并沒有哪一個比另一個更強,只是各自適用的領域不同罷了。

     

    我們首先來說XML:

    XML和JSON最大的不同在于 XML 可以通過在標簽中添加屬性這一簡單的方法來存儲元數據metadata。而使用 JSON 時需要創建一個對象,把元數據當作對象的成員來存儲。雖然二者都能達到存儲元數據的目的,但在這一情況下 XML 往往是更好的選擇,因為 JSON 的表達形式會讓客戶端程序開發人員誤以為要將數據轉換成一個對象。

             

    XML 的另一個優勢在于大多數的瀏覽器可以把它以具有高可讀性和強組織性的方式展現給用戶。XML的樹形結構讓它易于結構化,瀏覽器也讓用戶可以自行展開或折疊樹中的元素,這簡直就是調試的福音。

    XML 對比 JSON 有一個很重要的優勢就是它可以記錄混合內容。例如在XML中處理包含結構化標記的字符串時,程序員們只要把帶有標記的文本放在一個標簽內就可以了。可因為 JSON 只包含數據,沒有用于指明標簽的簡單方式,雖然可以使用處理元數據的解決方法,但這總有點濫用之嫌。

     

    說完了XML我們再來說JSON:   

    JSON 自身也有很多優點。其中最顯而易見的一點就是 JSON 比 XML 簡潔得多。因為 XML 中需要打開和關閉標簽,而 JSON 使用名稱/值對表示數據,使用簡單的 { 和 } 來標記對象,[和 ] 來標記數組,, 來表示數據的分隔, : 表示名稱和值的分隔。就算是使用gzip 壓縮,JSON 還是比 XML 要小,而且耗時更少。首先,由于 JSON 文件天生的簡潔性,與包含相同信息的 XML 相比,JSON 總是更小,這意味著更快的傳輸和處理速度。第二,在不考慮大小的情況下,兩組研究 表明使用JSON 執行序列化和反序列化的速度顯著優于使用 XML。第三,后續的研究指出 JSON 的處理在 CPU 資源的使用上也優于 XML。研究人員發現 JSON 在總體上使用的資源更少,其中更多的 CPU 資源消耗在用戶空間,系統空間消耗的 CPU 資源較少。

     

    JSON 的另一個優點在于其對對象和數組的表述和宿主語言中的數據結構相對應,例如對象以及對象組成的數組等等。雖然 XML 里也能表達這些數據結構,也只需調用一個函數就能完成解析,而往往需要更多的代碼才能正確的完成 XML 的序列化和反序列化處理。而且 XML 對于人類來說不如 JSON 那么直觀,XML 標準缺乏對象、數組的標簽的明確定義。當結構化的標記可以替代嵌套的標簽時,JSON 的優勢極為突出。JSON 中的花括號和中括號則明確表示了數據的結構,當然這一優勢也包含前文中的問題,在表示元數據時JSON 不如XML準確。雖然XML支持命名空間與前綴,但這不代表 JSON 沒有處理命名沖突的能力。比起 XML 的前綴,它處理命名沖突的方式更簡潔,在程序中的處理也更自然。在 JSON 里,每一個對象都在它自己的命名空間中,因此不同對象內的元素名稱可以隨意重復。在大多數編程語言中,不同的對象中的成員可以包含相同的名字,所以 JSON 根據對象進行名稱區分的規則在處理時更加自然。


    事實上,XML和JSON作為Java基礎的內容,看完了本文對于XML和JSON對比分析,等于又重新學習了一遍XML和JSON,溫故而知新不是沒有道理的,是不是感覺似乎又學會了新的東西呢,快來本站的Java基礎教程繼續學習新知識吧!



    熱門課程推薦

    全部班型支持免費試學

    動力節點在線報名表(此信息已加密,請放心填寫)

    返回頂部
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏