JSON是一個新的人類可讀( human readable)的資料格式,在過去幾年中已變得非常受歡迎,尤其是在web開發中。 JSON和 XML非常的相似。它們都試圖通過建立一種簡單,人類可讀的格式存儲資料。直到最近,XML被用于任何類型的需要迅速發送一小部分資料的系統中。比如那些從伺服器擷取資訊的API。在大多數情況下,XML做的很好。那麼,為什麼還需要JSON? JSON在設計時是為Web考慮的,是以它在JavaScript中真的很好用。使用類似 eval()的方法(使用 jQuery會很大提升這個方法的表現),你可以很容易使用JSON中的資訊填充一個Web頁面。 JSON聲稱相對XML有許多好處,包括:
- 容易閱讀
- 解析速度更快
- 占用空間更少
盡管容易閱讀是很難衡量的一點,但其它兩點是很顯然的。 很容易看出,存儲相同的資訊JSON确實需要更少的空間。快速浏覽一下JSON的網站後,你會發現幾個比較這兩種格式的例子。從頁面上可以很容易的看出:描述同樣的資訊JSON比XML少占用很多的空間。例如:第一個例子(詞彙表結構)存儲為XML需要502個字元,而存儲為JSON隻需345字元(大約少占30%的空間)。 對于“解析速度更快”這一點,有點難以測試。對此我寫了一個快速測試來看看我能以多快的速度來把一個XML和JSON字元串轉化為Java對象。 對于XML解析,我使用Java内置的 SAX解析器。SAX解析器允許周遊XML檔案,并把XML值賦給對象中适當的字段。這種方法相對JSON解析是比較繁瑣的,但不是沒有道理。 JSON的解析,我使用了GSON庫,隻需用一行代碼就可以很容易地在JSON和java對象之間轉換,隻需要一個這個類的定義就可以了(如Book類,字段名和JSON中的對應)。不過這使得這個類變量和JSON執行個體綁定到了一起。一旦類的執行個體名稱或JSON字段名有了變化,将會出現問題。 首先,我用相同的資料建立了一個XML和JSON來表示它。下面的XML和JSON檔案是使用 Programming Pearls中的資訊建立的。 XML版本 ?
1 2 3 4 5 6 7 8 9 10 11 12 | |
JSON版本 ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
結果 使用上面的XML和JSON檔案分别運作解析測試10,000,000次。結果并不令人驚訝,解析和轉換JSON成一個Java對象的速度比XML快30%左右。
- JSON平均運作時間:3.647208974029518E-5
- XML平均運作時間:5.011537916910817E-5
我得到的結論是: 相對XML,JSON的解析速度提高了30%,占用空間少30%。這些結果似乎和多數開發社群對兩種格式的看法一樣。換用JSON處理資料在性能上可以有不小的提升,而且還會減少空間的占用。 轉自: https://www.oschina.net/question/100267_61459