搜尋
首頁web前端js教程JSON與XML使用詳解

JSON與XML使用詳解

Apr 25, 2018 pm 05:18 PM
javascriptjson使用

這次帶給大家JSON與XML使用詳解,JSON與XML使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

1. 定義介紹

1.1 XML定義

擴展標記語言(Extensible Markup Language, XML) ,用於標記電子檔案使其具有結構性的標記語言,可以用來標記資料、定義資料類型,是一種允許使用者對自己的標記語言進行定義的來源語言。 XML使用DTD(document type definition)文件類型定義來組織資料;格式統一,跨平台和語言,早已成為業界公認的標​​準。
XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。 XML 提供統一的方法來描述和交換獨立於應用程式或供應商的結構化資料。

1.2 JSON定義

JSON(JavaScript Object Notation)一種輕量級的資料交換格式,具有良好的可讀和便於快速編寫的特性。可在不同平台之間進行資料交換。 JSON採用相容性很高的、完全獨立於語言文字格式,同時也具備類似C語言的習慣(包括C, C , C#, Java, JavaScript, Perl, Python等)體系的行為。這些特性使JSON成為理想的資料交換語言。
JSON是基於JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的子集。

2. XML與JSON優缺點

2.1 XML的優缺點

XML的優點
  A.格式統一,符合標準;
  B.容易與其他系統進行遠端交互,資料共享比較方便。

XML的缺點
  A.XML檔案龐大,檔案格式複雜,傳輸佔頻寬;
  B.伺服器端和客戶端都需要花費大量程式碼來解析XML,導致伺服器端和客戶端程式碼變得異常複雜且不易維護;
  C.客戶端不同瀏覽器之間解析XML的方式不一致,需要重複編寫很多程式碼;
  D.伺服器端和客戶端解析XML花費較多的資源和時間。

2.2 JSON的優缺點

JSON的優點:

  A.資料格式比較簡單,易於讀寫,格式都是壓縮的,佔用頻寬小;
  B.易於解析,客戶端JavaScript可以簡單的透過eval()進行JSON資料的讀取;
  C.支援多種語言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等伺服器端語言,方便伺服器端的解析;
  D.在PHP世界,已經有PHP-JSON和JSON-PHP出現了,偏於PHP序列化後的程式直接調用,PHP伺服器端的物件、陣列等能直接產生JSON格式,便於客戶端的存取提取;
  E.因為JSON格式能直接為伺服器端程式碼使用,大大簡化了伺服器端和用戶端的程式碼開發量,且完成任務不變,且易於維護。

JSON的缺點

  A.沒有XML格式這麼推廣的深入人心和喜用廣泛,沒有XML那麼通用性;
  B.JSON格式目前在Web Service中推廣還屬於初級階段。

3. XML和JSON的優缺點比較

可讀性面向。

JSON和XML的資料可讀性基本上相同,JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規範的標籤形式,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。

4.XML與JSON資料格式比較

#4.1 關於輕量級和重量級

#輕量級和重量級是相對來說的,那麼XML相對於JSON的重量級體現在哪呢?應該體現在解析上,XML目前設計了兩種解析方式:DOM和SAX。

DOM

DOM是把一個資料交換格式XML看成一個DOM物件,需要把XML檔整個讀入內存,這一點上JSON和XML的原理是一樣的,但是XML要考慮父節點和子節點,這一點上JSON的解析難度要小很多,因為JSON建於兩種結構:key/value,鍵值對的集合;值的有序集合,可理解為數組;

SAX

SAX不需要整個讀入文件就可以對解析出的內容進行處理,是一種逐步解析的方法。程式也可以隨時終止解析。這樣,一個大的文檔就可以逐步的、一點一點的展現出來,所以SAX適合於大規模的解析。這一點,JSON目前是做不到得。
所以,JSON和XML的輕/重量級的區別在於:
JSON只提供整體解析方案,而這種方法只在解析較少的資料時才能起到良好的效果;
XML提供了大規模資料的逐步解析方案,這種方案很適合於對大量資料的處理。

4.2 關於資料格式編碼及解析難度

在編碼方面。

雖然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仍有不可動搖的地位。

實例比較

XML和JSON都使用結構化方法來標記數據,下面來做一個簡單的比較。
用XML表示中國部分省市資料如下:

<?xml  version="1.0" encoding="utf-8" ?>
<country>
 <name>中国</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>台湾</name>
  <citys>
    <city>台北</city>
    <city>高雄</city>
  </citys> 
 </province>
 <province>
  <name>新疆</name>
  <citys>
   <city>乌鲁木齐</city>
  </citys>
 </province>
</country>

用JSON表示中國部分省市資料如下:

 var country =
    {
      name: "中国",
      provinces: [
      { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
      { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
      { name: "台湾", citys: { city: ["台北", "高雄"]} },
      { name: "新疆", citys: { city: ["乌鲁木齐"]} }
      ]
    }

編碼的可讀性來說,XML有明顯的優勢,畢竟人類的語言更貼近這樣的說明結構。 JSON讀起來更像一個資料塊,讀起來就比較費解了。不過,我們讀起來費解的語言,正是適合機器閱讀,所以透過JSON的索引country.provinces[0].name就能夠讀取「黑龍江」這個值。

編碼的手寫難度來說,XML還是舒服一些,好讀當然就好寫。不過寫出來的字符JSON明顯少很多。去掉空白製表以及換行的話,JSON就是密密麻麻的有用數據,而XML卻包含很多重複的標記字元。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

jsonp json實作AJAX跨域請求

Jsonp怎麼能解決ajax跨域

以上是JSON與XML使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用