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 和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優缺點的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!