JSON VS XML:JSON真的比XML好很多嗎?
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版本
<book>
<type>textbook</type>
<pages>256</pages>
<title>Programming Pearls 2nd Edition</title>
<description>The first edition of Programming Pearls was one of the most influential books I read early in my career...</description>
<rating>4.5</rating>
<coverType>paperback</coverType>
<genre>Computer Science</genre>
<author>Jon Bentley</author>
<publisher>Addison-Wesley Professional</publisher>
<copyright>1999</copyright>
</book>
JSON版本
{
"book": {
"type": "textbook",
"pages": "256",
"title": "Programming Pearls 2nd Edition",
"description": "The first edition of Programming Pearls was one of the most influential books I read early in my career...",
"rating": "4.5",
"coverType": "paperback",
"genre": "Computer Science",
"author": "Jon Bentley",
"publisher": "Addison-Wesley Professional",
"copyright": "1999"
}
}
結果
使用上面的XML和JSON文件分別運行解析測試10,000,000次。結果并不令人驚訝,解析和轉換JSON成一個Java對象的速度比XML快30%左右。
- JSON平均運行時間:3.647208974029518E-5
- XML平均運行時間:5.011537916910817E-5
我得到的結論是:
相對XML,JSON的解析速度提高了30%,占用空間少30%。這些結果似乎和多數開發社區對兩種格式的看法一樣。換用JSON處理數據在性能上可以有不小的提升,而且還會減少空間的占用。
轉自:OsChina
原文鏈接
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!