溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

json數(shù)據(jù)格式和xml數(shù)據(jù)格式的區(qū)別是什么

發(fā)布時(shí)間:2020-09-09 11:40:01 來(lái)源:億速云 閱讀:159 作者:小新 欄目:編程語(yǔ)言

json數(shù)據(jù)格式和xml數(shù)據(jù)格式的區(qū)別是什么?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。

JSON與XML的比較
   ◆可讀性
   JSON和XML的可讀性可謂不相上下,一邊是簡(jiǎn)易的語(yǔ)法,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù)。
   ◆可擴(kuò)展性
   XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒有什么是XML能擴(kuò)展,JSON不能的。不過(guò)JSON在Javascript主場(chǎng)作戰(zhàn),可以存儲(chǔ)Javascript復(fù)合對(duì)象,有著xml不可比擬的優(yōu)勢(shì)。
   ◆編碼難度
  XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無(wú)工具的情況下,相信熟練的開發(fā)人員一樣能很快的寫出想要的xml文檔和JSON字符串,不過(guò),xml文檔要多很多結(jié)構(gòu)上的字符。
   ◆解碼難度
   XML的解析方式有兩種:
   一是通過(guò)文檔模型解析,也就是通過(guò)父標(biāo)簽索引出一組標(biāo)記。
例如:xmlData.getElementsByTagName_r("tagName"),但是這樣是要在預(yù)先知道文檔結(jié)構(gòu)的情況下使用,無(wú)法進(jìn)行通用的封裝。
   另外一種方法是遍歷節(jié)點(diǎn)(document 以及 childNodes)。這個(gè)可以通過(guò)遞歸來(lái)實(shí)現(xiàn),不過(guò)解析出來(lái)的數(shù)據(jù)仍舊是形式各異,往往也不能滿足預(yù)先的要求。
   凡是這樣可擴(kuò)展的結(jié)構(gòu)數(shù)據(jù)解析起來(lái)一定都很困難。
   JSON也同樣如此。如果預(yù)先知道JSON結(jié)構(gòu)的情況下,使用JSON進(jìn)行數(shù)據(jù)傳遞簡(jiǎn)直是太美妙了,可以寫出很實(shí)用美觀可讀性強(qiáng)的代碼。如果你是純粹的前臺(tái)開發(fā)人員,一定會(huì)非常喜歡JSON。但是如果你是一個(gè)應(yīng)用開發(fā)人員,就不是那么喜歡了,畢竟 xml才是真正的結(jié)構(gòu)化標(biāo)記語(yǔ)言,用于進(jìn)行數(shù)據(jù)傳遞。
   而如果不知道JSON的結(jié)構(gòu)而去解析JSON的話,那簡(jiǎn)直是噩夢(mèng)。費(fèi)時(shí)費(fèi)力不說(shuō),代碼也會(huì)變得冗余拖沓,得到的結(jié)果也不盡人意。但是這樣也不影響眾多前臺(tái)開發(fā)人員選擇JSON。因?yàn)閖son.js中的toJSONString()就可以看到 JSON的字符串結(jié)構(gòu)。當(dāng)然不是使用這個(gè)字符串,這樣仍舊是噩夢(mèng)。常用JSON的人看到這個(gè)字符串之后,就對(duì)JSON的結(jié)構(gòu)很明了了,就更容易的操作 JSON。
   以上是在Javascript中僅對(duì)于數(shù)據(jù)傳遞的xml與JSON的解析。在 Javascript地盤內(nèi),JSON畢竟是主場(chǎng)作戰(zhàn),其優(yōu)勢(shì)當(dāng)然要遠(yuǎn)遠(yuǎn)優(yōu)越于xml。如果JSON中存儲(chǔ)Javascript復(fù)合對(duì)象,而且不知道其結(jié)構(gòu)的話,我相信很多程序員也一樣是哭著解析JSON的。
     ◆實(shí)例比較
   XML和JSON都使用結(jié)構(gòu)化方法來(lái)標(biāo)記數(shù)據(jù),下面來(lái)做一個(gè)簡(jiǎn)單的比較。
   用XML表示中國(guó)部分省市數(shù)據(jù)如下:

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

    用JSON表示如下:
    {
    name:"中國(guó)",
    province:[
    {
    name:"黑龍江",
    citys:{
    city:["哈爾濱","大慶"]
    }
    },
    {
    name:"廣東",
    citys:{
    city:["廣州","深圳","珠海"]
    }
    },
    {
    name:"臺(tái)灣",
    citys:{
    city:["臺(tái)北","高雄"]
    }
    },
    {
    name:"新疆",
    citys:{
    city:["烏魯木齊"]
    }
    }
    ]
    }

編碼的可讀性,xml有明顯的優(yōu)勢(shì),畢竟人類的語(yǔ)言更貼近這樣的說(shuō)明結(jié)構(gòu)。json讀起來(lái)更像一個(gè)數(shù)據(jù)塊,讀起來(lái)就比較費(fèi)解了。不過(guò),我們讀起來(lái)費(fèi)解的語(yǔ)言,恰恰是適合機(jī)器閱讀,所以通過(guò)json的索引.province[0].name就能夠讀取“黑龍江”這個(gè)值?! 【幋a的手寫難度來(lái)說(shuō),xml還是舒服一些,好讀當(dāng)然就好寫。不過(guò)寫出來(lái)的字符JSON就明顯少很多。去掉空白制表以及換行的話,JSON就是密密麻麻的有用數(shù)據(jù),而xml卻包含很多重復(fù)的標(biāo)記字符。

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)json數(shù)據(jù)格式和xml數(shù)據(jù)格式的區(qū)別是什么大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI