小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

json和xml比較與區(qū)別

 秋洛克SH 2016-03-23

一、兩者的共同優(yōu)點(diǎn)是都是文本表示的數(shù)據(jù)格式,可以跨平臺(tái)、跨系統(tǒng)交換數(shù)據(jù)

 

1、可讀性

兩者都具備很好的可讀性,但從實(shí)際應(yīng)用出發(fā),個(gè)人還是覺得XML文檔的可讀性無疑會(huì)更高,要求你從一大堆的json代碼里看出它的結(jié)構(gòu)層次關(guān)系還是相對(duì)比較困難的;而且現(xiàn)在很多的IDE工具都可以把XML格式化成易讀的結(jié)構(gòu)形式,看起來相當(dāng)舒服,而json則不然。在這一方面我投XML一票。

2、是否易于在服務(wù)端創(chuàng)建數(shù)據(jù)

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

3、是否易于在客戶端處理數(shù)據(jù)

在客戶端,要處理XMLHttpRequest請(qǐng)求返回的json格式響應(yīng)數(shù)據(jù)是一件輕而易舉的事情,只需要使用javascript的eval函數(shù)就可以實(shí)現(xiàn)把json格式的數(shù)據(jù)轉(zhuǎn)換成javascript對(duì)象,然后通過對(duì)象的屬性去訪問值,這就是json最優(yōu)雅之處,無數(shù)人為之著迷。而XML在這一方面就不是那么的友善了,曾令無數(shù)的程序員頭痛不已,因?yàn)樘幚鞽ML響應(yīng)數(shù)據(jù),你得通過DOM樹,這是非常繁瑣且容易出錯(cuò)的工作。這一點(diǎn),我毫不猶豫地選擇json。

4、擴(kuò)展性

可擴(kuò)展性有助于減少生產(chǎn)者與消費(fèi)者之間的數(shù)據(jù)耦合。在AJAX應(yīng)用里,客戶端腳本應(yīng)該合理地兼容不可知的數(shù)據(jù)擴(kuò)展。

毫無疑問,XML是可擴(kuò)展的,但它的擴(kuò)展是有局限的,因?yàn)槿绻阋m應(yīng)擴(kuò)展的話,那么你的客戶端代碼不得不作出相應(yīng)的改動(dòng)

如果你在響應(yīng)xml中<firstName>結(jié)點(diǎn)后增加了<middlename>這一結(jié)點(diǎn)的話,那以上的代碼就要作相應(yīng)的改變,否則會(huì)出錯(cuò),也就是說,XML的擴(kuò)展得伴隨著解析代碼的變更,這可沒有什么魔法可言。而json則簡(jiǎn)單得多,即使你要增加middleName這一屬性,在js客戶端依然是通過對(duì)象訪問屬性值即可,而不會(huì)引起js上的語法出錯(cuò)之類的錯(cuò)誤,導(dǎo)致程序無法執(zhí)行。

5、調(diào)試和故障排除

這方面需要從服務(wù)端和客戶端兩方面進(jìn)行考慮,在服務(wù)器端,要確保數(shù)據(jù)是格式良好的和有效的;在客戶端,它應(yīng)該容易調(diào)試錯(cuò)誤的。

使用XML的話會(huì)相對(duì)容易地檢查數(shù)據(jù)被發(fā)送到客戶端是格式良好的和有效的。您還可以使用數(shù)據(jù)架構(gòu)(schema)來驗(yàn)證xml的正確性和有效性。使用JSON,這個(gè)任務(wù)是手動(dòng)的,并涉及驗(yàn)證響應(yīng)對(duì)象中是否包含正確的屬性。

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

 

二、XML

 

使用XML作為傳輸格式的優(yōu)勢(shì)


1. 格式統(tǒng)一, 符合標(biāo)準(zhǔn)
2. 容易與其他系統(tǒng)進(jìn)行遠(yuǎn)程交互, 數(shù)據(jù)共享比較方便
3.調(diào)用將 XML 用作傳輸?shù)默F(xiàn)有服務(wù)。
4.使用 XSLT 可以動(dòng)態(tài)轉(zhuǎn)換 XML。這是企業(yè)服務(wù)總線 (ESB) 方案中的理想功能。

缺點(diǎn)


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

 

三、JSON

 

優(yōu)點(diǎn)


1. 數(shù)據(jù)格式比較簡(jiǎn)單, 易于讀寫, 格式都是壓縮的, 占用帶寬小,瀏覽器解析快
2. 易于解析這種語言, 客戶端JavaScript可以簡(jiǎn)單的通過eval()進(jìn)行JSON數(shù)據(jù)的讀取
3. 構(gòu)造友好,支持多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等語言服務(wù)器端語言, 便于服務(wù)器端的解析
4. 在PHP世界, 已經(jīng)有PHP-JSON和JSON-PHP出現(xiàn)了, 便于PHP序列化后的程序直接調(diào)用. PHP服務(wù)器端的對(duì)象、數(shù)組等能夠直接生JSON格式, 便于客戶端的訪問提取.
5. 因?yàn)镴SON格式能夠直接為服務(wù)器端代碼使用, 大大簡(jiǎn)化了服務(wù)器端和客戶端的代碼開發(fā)量, 但是完成的任務(wù)不變, 且易于維護(hù)
6.相當(dāng)穩(wěn)定。JSON 的附加內(nèi)容將成為超集。

缺點(diǎn)


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

 

四、實(shí)例

 

用XML表示中國部分省市數(shù)據(jù)如下

XML 代碼   復(fù)制

<?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>臺(tái)灣</name>
        <cities>
            <city>臺(tái)北</city>
            <city>高雄</city>
        </cities>
    </province>
    <province>
        <name>新疆</name>
        <cities>
            <city>烏魯木齊</city>
        </cities>
    </province>
</country>

 

用JSON表示如下

C# 代碼   復(fù)制

...{

    'name':'中國',

    'province':[

    ...{

       'name':'黑龍江',

        'cities':...{

            'city':['哈爾濱','大慶']

        }

     },

     ...{

        'name':'廣東',

        'cities':...{

            'city':['廣州','深圳','珠海']

        }

    },

    ...{

        'name':'臺(tái)灣',

        'cities':...{

            'city':['臺(tái)北','高雄']

        }

    },

    ...{

        'name':'新疆',

        'cities':...{

            'city':['烏魯木齊']

        }

    }

]

}

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多