天天看點

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版本 ?

1 2 3 4 5 6 7 8 9 10 11 12

<

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版本 ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14

{

"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處理資料在性能上可以有不小的提升,而且還會減少空間的占用。     轉自: https://www.oschina.net/question/100267_61459