json和xml比較與區別

本文源自:http://www.studyofnet.com/news/326.html

一、兩者的共同優點是都是文本表示的數據格式,可以跨平臺、跨系統交換數據

 

1、可讀性

兩者都具備很好的可讀性,但從實際應用出發,個人還是覺得XML文檔的可讀性無疑會更高,要求你從一大堆的json代碼裏看出它的結構層次關係還是相對比較困難的;而且現在很多的IDE工具都可以把XML格式化成易讀的結構形式,看起來相當舒服,而json則不然。在這一方面我投XML一票。

2、是否易於在服務端創建數據

XML已經流行了好多年了,故目前流行的編程語言都已經存在大量的XML數據綁定API去進行創建XML,以java語言爲例,你既可以用JAXB,又可以用XmlBeans,又或者dom4j、jdom等去把數據寫到xml文件中。而另一方面,json這一方面的API則相對是一個全新的領域,儘管如此,json官方網站還是列出了很多令人印象深刻的各種語言的API,java方面比較著名的有json-lib,此外gson也算一個。在這一方面,雖然json相對於XML並不是望塵莫及,但還是略微遜色一籌,尤其是在複雜的應用方面,XML方面的API已經存在多年,相對來說成熟穩定得多了。

3、是否易於在客戶端處理數據

在客戶端,要處理XMLHttpRequest請求返回的json格式響應數據是一件輕而易舉的事情,只需要使用javascript的eval函數就可以實現把json格式的數據轉換成javascript對象,然後通過對象的屬性去訪問值,這就是json最優雅之處,無數人爲之着迷。而XML在這一方面就不是那麼的友善了,曾令無數的程序員頭痛不已,因爲處理XML響應數據,你得通過DOM樹,這是非常繁瑣且容易出錯的工作。這一點,我毫不猶豫地選擇json。

4、擴展性

可擴展性有助於減少生產者與消費者之間的數據耦合。在AJAX應用裏,客戶端腳本應該合理地兼容不可知的數據擴展。

毫無疑問,XML是可擴展的,但它的擴展是有侷限的,因爲如果你要適應擴展的話,那麼你的客戶端代碼不得不作出相應的改動

如果你在響應xml中<firstName>結點後增加了<middlename>這一結點的話,那以上的代碼就要作相應的改變,否則會出錯,也就是說,XML的擴展得伴隨着解析代碼的變更,這可沒有什麼魔法可言。而json則簡單得多,即使你要增加middleName這一屬性,在js客戶端依然是通過對象訪問屬性值即可,而不會引起js上的語法出錯之類的錯誤,導致程序無法執行。

5、調試和故障排除

這方面需要從服務端和客戶端兩方面進行考慮,在服務器端,要確保數據是格式良好的和有效的;在客戶端,它應該容易調試錯誤的。

使用XML的話會相對容易地檢查數據被髮送到客戶端是格式良好的和有效的。您還可以使用數據架構(schema)來驗證xml的正確性和有效性。使用JSON,這個任務是手動的,並涉及驗證響應對象中是否包含正確的屬性。

在客戶端,要從兩者中找到錯誤都是比較困難的。對於XML,瀏覽器是完全無法將xml格式化成responseXML;如果對於數據量較少的json數據,還可以通過firebug來發現錯誤,但對於大數據量的話,那隻能靠手工檢查了,否則也只能坐以待斃了。

 

二、XML

 

使用XML作爲傳輸格式的優勢


1. 格式統一, 符合標準
2. 容易與其他系統進行遠程交互, 數據共享比較方便
3.調用將 XML 用作傳輸的現有服務。
4.使用 XSLT 可以動態轉換 XML。這是企業服務總線 (ESB) 方案中的理想功能。

缺點


1. XML文件格式文件龐大, 格式複雜, 傳輸佔用帶寬
2. 服務器端和客戶端都需要花費大量代碼來解析XML, 不論服務器端和客戶端代碼變的異常複雜和不容易維護
3. 客戶端不同瀏覽器之間解析XML的方式不一致, 需要重複編寫很多代碼
4. 服務器端和客戶端解析XML花費資源和時間

 

三、JSON

 

優點


1. 數據格式比較簡單, 易於讀寫, 格式都是壓縮的, 佔用帶寬小,瀏覽器解析快
2. 易於解析這種語言, 客戶端JavaScript可以簡單的通過eval()進行JSON數據的讀取
3. 構造友好,支持多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等語言服務器端語言, 便於服務器端的解析
4. 在PHP世界, 已經有PHP-JSON和JSON-PHP出現了, 便於PHP序列化後的程序直接調用. PHP服務器端的對象、數組等能夠直接生JSON格式, 便於客戶端的訪問提取.
5. 因爲JSON格式能夠直接爲服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發量, 但是完成的任務不變, 且易於維護
6.相當穩定。JSON 的附加內容將成爲超集。

缺點


1. 沒有XML格式這麼推廣的深入人心和使用廣泛, 沒有XML那麼通用性
2. JSON格式目前在Web Service中推廣還屬於初級階段。

 

四、實例

 

用XML表示中國部分省市數據如下

 
XML 代碼   複製

<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中國</name>
<province>
<name>黑龍江</name>
<cities>
<city>哈爾濱</city>
<city>大慶</city>
</cities>
</province>
<province>
<name>廣東</name>
<cities>
<city>廣州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>臺灣</name>
<cities>
<city>臺北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>烏魯木齊</city>
</cities>
</province>
</country>

 

用JSON表示如下

 
C# 代碼   複製

{
"name":"中國",
"province":[
{
"name":"黑龍江",
"cities":{
"city":["哈爾濱","大慶"]
        }
     },
{
"name":"廣東",
"cities":{
"city":["廣州","深圳","珠海"]
        }
    },
{
"name":"臺灣",
"cities":{
"city":["臺北","高雄"]
        }
    },
{
"name":"新疆",
"cities":{
"city":["烏魯木齊"]
        }
    }
]
}

發佈了21 篇原創文章 · 獲贊 21 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章