您好,登錄后才能下訂單哦!
JSON和XML有哪些缺點和優點?相信很多新手小白對JSON和XML的了解處于懵懂狀態,小編用這篇文章闡釋這個問題,希望你能有所收獲。如下資料是關于JSON和XML的內容。
JSON(Javascript Object Notation) 是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。它基于Javascript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, Javascript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。
JSON概念很簡單,就是服務器直接生成Javascript語句,客戶端獲取后直接用eval方法來獲得這個對象,這樣就可以省去解析XML的性損失。
如要從后臺載入信息,寫成XML,如下:
<contact> <friend> <name>Michael</name> <email>17bity@gmail.com</email> <homepage>http://www.jialing.net</homepage> </friend> <friend> <name>John</name> <email>john@gmail.com</email> <homepage>http://www.john.com</homepage> </friend> <friend> <name>Peggy</name> <email>peggy@gmail.com</email> <homepage>http://www.peggy.com</homepage> </friend> </contact>
而寫成JSON:
[ { name:"Michael", email:"17bity@gmail.com", homepage:"http://www.jialing.net" }, { name:"John", email:"john@gmail.com", homepage:"http://www.jobn.com" }, { name:"Peggy", email:"peggy@gmail.com", homepage:"http://www.peggy.com" } ]
簡單的不只是表達上,最重要的是可以丟棄讓人暈頭轉向的DOM解析了。因為只要符合Javascript的聲明規范,JavaScrip會自動幫你解析 好 的。Ajax中使用JSON的基本方法是前臺載入后臺聲明Javascript對象的字符串,用eval方法來將它轉為實際的對象,最后通過 DHTML更新頁面信息。
JSON不僅減少了解析XML解析帶來的性能問題和兼容性問題,而且對于Javascript來說非常容易使用,可以方便的通過遍歷數組以及訪問對象屬性 來獲取數據,其可讀性也不錯,基本具備了結構化數據的性質。不得不說是一個很好的辦法,而且事實上google maps就沒有采用XML傳遞數據,而是采用了JSON方案。
JSON的另外一個優勢是"跨域性",例如你在www.Web.cn的網頁里使用
一種輕量級的數據交換格式,具有良好的可讀和便于快速編寫的特性。業內主流技術為其提供了完整的解決方案(有點類似于正則表達式 ,獲得了當今大部分語言的支持),從而可以在不同平臺間進行數據交換。JSON采用兼容性很高的文本格式,同時也具備類似于C語言體系的行為。
擴展標記語言 (Extensible Markup Language, XML) ,用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。
[ XML ]
使用XML作為傳輸格式的優勢:
格式統一, 符合標準
容易與其他系統進行遠程交互, 數據共享比較方便
缺點:
XML文件格式文件龐大, 格式復雜, 傳輸占用帶寬
服務器端和客戶端都需要花費大量代碼來解析XML, 不論服務器端和客戶端代碼變的異常復雜和不容易維護
客戶端不同瀏覽器之間解析XML的方式不一致, 需要重復編寫很多代碼
服務器端和客戶端解析XML花費資源和時間
[ JSON ]
那么除了XML格式, 還有沒有其他格式, 有一種叫做JSON (JavaScript Object Notation) 的輕量級數據交換格式能夠替代XML的工作.
優點:
數據格式比較簡單, 易于讀寫, 格式都是壓縮的, 占用帶寬小
易于解析這種語言, 客戶端JavaScript可以簡單的通過eval_r()進行JSON數據的讀取
支持多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等語言服務器端語言, 便于服務器端的解析
在PHP世界, 已經有PHP-JSON和JSON-PHP出現了, 便于PHP序列化后的程序直接調用. PHP服務器端的對象、數組等能夠直接生JSON格式, 便于客戶端的訪問提取.
因為JSON格式能夠直接為服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發量, 但是完成的任務不變, 且易于維護
缺點:
沒有XML格式這么推廣的深入人心和使用廣泛, 沒有XML那么通用性
JSON格式目前在Web Service中推廣還屬于初級階段
JSON 和 XML 優缺點的比較
在可讀性方面,JSON和XML的數據可讀性基本相同。JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規范的標簽形式,很難分出勝負。
在可擴展性方面,XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,JSON不能的。
在編碼難度方面,XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。
在解碼難度方面,XML的解析得考慮子節點父節點,讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點XML輸的真是沒話說。
在流行度方面,XML已經被業界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域,未來的發展一定是XML讓位于JSON。到時Ajax應該變成Ajaj(Asynchronous Javascript and JSON)了。
JSON和XML同樣擁有豐富的解析手段。
JSON相對于XML來講,數據的體積小。
JSON與JavaScript的交互更加方便。
JSON對數據的描述性比XML較差。
JSON的速度要遠遠快于XML。
1.數據交換格式比較之關于XML和JSON:
XML:extensible markup language,一種類似于HTML的語言,他沒有預先定義的標簽,使用DTD(document type definition)文檔類型定義來組織數據;格式統一,跨平臺和語言,早已成為業界公認的標準。具體的可以問Google或百度。相比之JSON這種輕量級的數據交換格式,XML可以稱為重量級的了。
JSON : JavaScript Object Notation 是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。它基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。
2.數據交換格式比較之關于輕量級和重量級:
輕量級和重量級是相對來說的,那么XML相對于JSON的重量級體現在哪呢?我想應該體現在解析上,XML目前設計了兩種解析方式:DOM和 SAX;
DOM是把一個數據交換格式XML看成一個DOM對象,需要把XML文件整個讀入內存,這一點上JSON和XML的原理是一樣的,但是XML要考慮父節點和子節點,這一點上JSON的解析難度要小很多,因為JSON構建于兩種結構:key/value,鍵值對的集合;值的有序集合,可理解為數組;
SAX不需要整個讀入文檔就可以對解析出的內容進行處理,是一種逐步解析的方法。程序也可以隨時終止解析。這樣,一個大的文檔就可以逐步的、一 點一點的展現出來,所以SAX適合于大規模的解析。這一點,JSON目前是做不到得。
所以,JSON和XML的輕/重量級的區別在于:JSON只提供整體解析方案,而這種方法只在解析較少的數據時才能起到良好的效果;而XML提 供了對大規模數據的逐步解析方案,這種方案很適合于對大量數據的處理。
3.數據交換格式比較之關于數據格式編碼及解析的難度:
在編碼上,雖然XML和JSON都有各自的編碼工具,但是JSON的編碼要比XML簡單,即使不借助工具,也可以寫出JSON代碼,但要寫出好的XML代碼就有點困難;與XML一樣,JSON也是基于文本的,且它們都使用Unicode編碼,且其與數據交換格式XML一樣具有可讀性。
主觀上來看,JSON更為清晰且冗余更少些。JSON網站提供了對JSON語法的嚴格描述,只是描述較簡短。從總體來看,XML比較適合于標記 文檔,而JSON卻更適于進行數據交換處理。
在解析上,在普通的web應用領域,開發者經常為XML的解析傷腦筋,無論是服務器端生成或處理XML,還是客戶端用 JavaScript 解析XML,都常常導致復雜的代碼,極低的開發效率。
實際上,對于大多數web應用來說,他們根本不需要復雜的XML來傳輸數據,XML宣稱的擴展性在此就很少具有優勢;許多Ajax應用甚至直接返回HTML片段來構建動態web頁面。和返回XML并解析它相比,返回HTML片段大大降低了系統的復雜性,但同時缺少了一定的靈活性。同XML或 HTML片段相比,數據交換格式JSON 提供了更好的簡單性和靈活性。在web serivice應用中,至少就目前來說XML仍有不可動搖的地位。
關于JSON和XML的缺點和優點就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。