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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!