于数据交换格式XML和JSON的比较
?目前,在web開發(fā)領(lǐng)域,主要的數(shù)據(jù)傳輸格式有XML和JSON,對于XML相信每一個(gè)web developer都不會感到陌生;相比之下,JSON可能對于一些新步入開發(fā)領(lǐng)域的新手會感到有些陌生,也可能你之前已經(jīng)聽說過,但對于XML和 JSON的不同之處可能會不怎么了解。對于在 Ajax開發(fā)中,是選擇XML還是JSON,一直存在著爭議,個(gè)人還是比較傾向于JSON的,雖然JSON才處于起步階段,但我相信JSON最終會取代XML成為Ajax的首選,到時(shí)Ajax可能要更名為Ajaj(Asynchronous JavaScript and JSON)了;
?
1.關(guān)于XML和JSON:
?
???? XML:extensible markup language,一種類似于HTML的語言,他沒有預(yù)先定義的標(biāo)簽,使用DTD(document type definition)文檔類型定義來組織數(shù)據(jù);格式統(tǒng)一,跨平臺和語言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。具體的可以問Google或百度。相比之JSON這種輕量級的 數(shù)據(jù)交換格式,XML可以稱為重量級的了。
????
???? JSON : JavaScript Object Notation 是一種輕量級的數(shù)據(jù)交換格式。 易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。 它基于JavaScript Programming Language?,?Standard ECMA-262 3rd Edition - December 1999?的一個(gè)子集。 JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換語言。具體的可以看這篇文章:http://www.json.org/json-zh.html
?
2.關(guān)于輕量級和重量級:
?
???? 輕量級和重量級是相對來說的,那么XML相對于JSON的重量級體現(xiàn)在哪呢?我想應(yīng)該體現(xiàn)在解析上,XML目前設(shè)計(jì)了兩種解析方式:DOM和SAX;
???? DOM是把一個(gè)XML看成一個(gè)DOM對象,需要把XML文件整個(gè)讀入內(nèi)存,這一點(diǎn)上JSON和XML的原理是一樣的,但是XML要考慮父節(jié)點(diǎn)和子節(jié)點(diǎn),這一點(diǎn)上JSON的解析難度要小很多,因?yàn)镴SON構(gòu)建于兩種結(jié)構(gòu):key/value,鍵值對的集合;值的有序集合,可理解為數(shù)組;
???? SAX不需要整個(gè)讀入文檔就可以對解析出的內(nèi)容進(jìn)行處理,是一種逐步解析的方法。程序也可以隨時(shí)終止解析。這樣,一個(gè)大的文檔就可以逐步的、一點(diǎn)一點(diǎn)的展現(xiàn)出來,所以SAX適合于大規(guī)模的解析。這一點(diǎn),JSON目前是做不到得。
???? 所以,JSON和XML的輕/重量級的區(qū)別在于:JSON只提供整體解析方案,而這種方法只在解析較少的數(shù)據(jù)時(shí)才能起到良好的效果;而XML提供了對大規(guī)模數(shù)據(jù)的逐步解析方案,這種方案很適合于對大量數(shù)據(jù)的處理。
?
3.關(guān)于數(shù)據(jù)格式編碼及解析的難度:
?
???? 在編碼上,雖然XML和JSON都有各自的編碼工具,但是JSON的編碼要比XML簡單,即使不借助工具,也可以寫出JSON代碼,但要寫出好的XML代碼就有點(diǎn)困難;與XML一樣,JSON也是基于文本的,且它們都使用Unicode編碼,且其與XML一樣具有可讀性。主觀上來看,JSON更為清晰且冗余更少些。JSON網(wǎng)站提供了對JSON語法的嚴(yán)格描述,只是描述較簡短。從總體來看,XML比較適合于標(biāo)記文檔,而JSON卻更適于進(jìn)行數(shù)據(jù)交換處理。
???? 在解析上,在普通的web應(yīng)用領(lǐng)域,開發(fā)者經(jīng)常為XML的解析傷腦筋,無論是服務(wù)器端生成或處理XML,還是客戶端用 JavaScript 解析XML,都常常導(dǎo)致復(fù)雜的代碼,極低的開發(fā)效率。實(shí)際上,對于大多數(shù)web應(yīng)用來說,他們根本不需要復(fù)雜的XML來傳輸數(shù)據(jù),XML宣稱的擴(kuò)展性在此就很少具有優(yōu)勢;許多Ajax應(yīng)用甚至直接返回HTML片段來構(gòu)建動態(tài)web頁面。和返回XML并解析它相比,返回HTML片段大大降低了系統(tǒng)的復(fù)雜性,但同時(shí)缺少了一定的靈活性。同XML或HTML片段相比,JSON 提供了更好的簡單性和靈活性。在web serivice應(yīng)用中,至少就目前來說XML仍有不可動搖的地位
總結(jié)
以上是生活随笔為你收集整理的于数据交换格式XML和JSON的比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二手单反值得买吗
- 下一篇: iphone-命令行编译之--xcode