XML和JSON(JavaScript Object Notation)

來源:互聯網
上載者:User
原創文章,如需轉載,請註明出處。

當我們在定義AJAX服務的時候,對於各種各樣的請求,應該以什麼樣的資料格式來響應哪?
當然如果是請求一段Markup代碼的話,HTML就是最合適的,用戶端請求到資料後,就可以直接插入到前端頁面中了。那如果用戶端需要的是純粹的資料的話,我們是應該提供XML哪,還是JSON?這兩者各有什麼優缺點和好處哪,瞭解了這兩者的差異後我們就可以基於實際情況進行權衡取捨了。

我們從以下幾個方面來進行比較:
1、用戶端
在用戶端通過向伺服器發送XMLHttpRequest,就可以得到請求資料了,哪什麼樣的資料格式更容易處理哪?
 
JSON樣本:{ 
    "author" :  "Gambardella, Matthew", 
    "title"    :  "XML Developer's Guide", 
    "genre"  :  "Computer" 
}

對於JSON資料,只需要調用JavaScript的Eval方法就可以將JSON字串序列化成為JavaScript對象,而後就可以直接存取了。如下所示:

var book = eval(request.responseText);  
alert(book.author);

XML樣本:<book>
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
</book>

對於XML資料,其本身是一個DOM Tree的資料結構,開發人員必須使用DOM API來訪問和處理XML資料;而且DOM在各個瀏覽器中的實現也不盡相同,所以針對XML DOM的編程方式會變的更為複雜。參見下面的實現方式:

var book = request.responseXML;   
var authors = book.getElementsByTagName("author");  
alert(authors[0].firstChild.textContent);

另外對於XMLDOM,瀏覽器目前還不支援類似於XPath這樣的查詢語句。顯然對於XMLDOM資料的訪問顯然要比訪問JSON複雜多了。

2、伺服器端
在伺服器端需要向用戶端發送資料,什麼樣的資料格式處理起來更容易哪?

顯然對於如何序列化或者犯序列化一個對象成為XML字串,各種服務端的程式設計語言都有提供,而且還會有多種方式。例如.NET Framework就提供了XmlSerializer類來序列化一個對象成為Xml文檔,另外開發人員還可以使用XmlWriter、XMLDocument來直接構建Xml字串。

而對於JSON這樣一種資料格式則鮮有提供,這就需要開發人員自己動手或者使用一些Open Source的Library。在複雜物件的序列化或者還原序列化上,由於Xml做的比較早應該會更穩定一些。

在這點上XML會優於JSON.

3、安全性
JSON 本來是JavaScript 的一個安全的子集,不會含有賦值和調用。因此在將JSON資料裝換成為JavaScript對象的時候,我們包括許多JavaScript 庫都使用 Eval 函數。這意味著擷取的JSON資料將被解析並執行,注意是執行,尤其有一些資料是來自使用者輸入的話,可能會帶來意想不到的安全性問題。攻擊者也可以利用這點發送畸形、惡意的 JSON資料,這樣Eval 函數就會執行這些惡意代碼。


從這一點上來說也要求我們如果在使用JSON作為資料交換格式的時候,必須保障JSON安全。比較常見的辦法是使用Regex來檢查JSON資料是否包含有惡意代碼關鍵字。

而XML則相對來講更安全一些。


4、效能

從資料轉送量上來看JSON顯然要優於XML,JSON更輕量級一些,它沒有像XML那樣多的Open和Closing標記。同時在對資料的解析速度上,JSON也要優於XML。

5. 其他
另外從資料格式的驗證角度來看的話,XML的驗證技術更成熟,而目前關於JSON的驗證還比較少。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.