2014-10-09 65 views
0

我對Web服務有點新鮮。我目前正在爲我的論文開發android應用程序。與移動應用程序一起是PHP中的Web服務。哪種字符串格式更適合在Web服務中使用JSON或XML

我的問題是在性能,安全性和其他方面哪個更好? XML格式還是JSON格式?

重複被認爲..如果任何

在此先感謝

+0

我更喜歡json,因爲它有更少的開銷 – 2014-10-09 09:47:04

+0

http://stackoverflow.com/questions/3536893/what-are-the-pros-and-cons-of-xml-and-json – 2014-10-09 09:47:26

回答

0

之前回答時要使用哪一個,一點背景:

我應該指出,這種比較是真正從的角度在帶有JavaScript的瀏覽器中使用它們。這不是數據格式被使用的方式,並且有很多優秀的解析器會改變細節以使我所說的不完全有效。

JSON更加緊湊,並且(在我看來)更具可讀性 - 在傳輸中,它可以「更快」,只是因爲傳輸的數據更少。

解析時,它取決於您的解析器。將代碼(無論是JSON還是XML)轉換爲數據結構(如地圖)的解析器可能受益於XML的嚴格性質(XML Schemas很好地消除了數據結構的歧義) - 但是在JSON中,項目的類型(字符串/數字/嵌套JSON對象)可以語法來推斷,例如:

myJSON = {"age" : 12, 
      "name" : "Danielle"} 

解析器不需要足夠智能意識到12代表一個數字,(和Danielle是像任何其他的字符串)。因此,在JavaScript中,我們可以這樣做:

anObject = JSON.parse(myJSON); 
anObject.age === 12 // True 
anObject.name == "Danielle" // True 
anObject.age === "12" // False 

在XML我們不得不做這樣做如下:

<person> 
    <age>12</age> 
    <name>Danielle</name> 
</person> 

(順便說一句,這說明了XML是相當冗長的地步;關注數據傳輸)。要使用這些數據,我們會通過分析器運行它,然後我們不得不調用是這樣的:

myObject = parseThatXMLPlease(); 
thePeople = myObject.getChildren("person"); 
thePerson = thePeople[0]; 
thePerson.getChildren("name")[0].value() == "Danielle" // True 
thePerson.getChildren("age")[0].value() == "12" // True 

事實上,良好的解析器很可能鍵入age你(在另一方面,你可能不希望它)。當我們訪問這些數據時發生了什麼 - 而不是像上面的JSON示例那樣進行屬性查找 - 我們正在對關鍵字name進行地圖查找。這可能是更直觀地形成這樣的XML:

<person name="Danielle" age="12" /> 

但我們還是要做地圖查找來訪問我們的數據:

myObject = parseThatXMLPlease(); 
age = myObject.getChildren("person")[0].getAttr("age"); 

編輯:原文:

在大多數編程語言中(不是全部,任何延伸),像這樣的映射查找將比屬性查找更昂貴(就像我們在解析JSON時得到的那樣)。

這是一種誤解:請記住,在JavaScript(和其他動態語言)有地圖查詢和現場查詢沒有區別。實際上,現場查詢只是地圖查找

如果您想要進行真正有價值的比較,最好的方法是對其進行基準測試 - 在計劃使用數據的環境中進行基準測試。

因爲我一直在打字,菲利克斯·克林已經提出了一個相當簡潔的答案,比較他們在何時使用每一個,所以我不會再繼續下去。

+0

更好指向鏈接不僅僅是複製粘貼,反正你的最後一行很有趣......那個Felix King http://stackoverflow.com/questions/4862310/json-and-xml-comparison – nobalG 2014-10-09 11:32:13

+0

用XML你可以用Xpath來獲取數據:''字符串(/人/ @歲)' – ThW 2014-10-09 11:32:57

1

JSON和Xml都很好,但是如果我說,我更喜歡JSON,因爲它具有良好的管理形式,與XML相比體積小,並且更加專注於內容而不是文本格式化字符,而另一方面由XML使用。特別是在移動的情況下,如果要下載XML數據,那麼額外的文本格式字符將會出現在我認爲不可取的地方。所以,我認爲你應該使用JSON。否則你已經根據你的參數實現了你的xml解析器,但是對於JSON,已經有庫存在

1

這取決於什麼類型的客戶端將連接到該Web服務。

如果您打算從瀏覽器內部聯繫web服務器a'la AJAX來自Javascript的調用,那麼JSON就是贏家,因爲它本質上是Javascript對象的序列化。 JSON的這個屬性使它更適合於Javascript中的客戶端腳本。 JSON數據可以直接返回到生活,呼吸Javascript對象,沒有太多hullabaloo。

XML和JSON被設計用於兩個不同的目的。 XML起源於爲文檔中的文本提供語義定義的方式。另一方面,JSON專門用於序列化數據結構。

兩者都可以做到彼此都可以做的事情,但那些根本不同的基本設計理念是我認爲在你如何使用每種類型的標記。

確實,XML可以表示數據結構,但是在XML中描述像空數組這樣的結構的示例展示了JSON在描述數據結構時的表現方式。

另一方面,JSON與描述文檔中文本背後的語義含義有很大的不匹配,這是XML擅長的(認爲是HTML)。

不容易回答。連接客戶端的需求和需要序列化的數據類型應該推動XML和JSON之間的決定。

相關問題