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

JSON與XML使用詳解

Apr 25, 2018 pm 05:18 PM
javascript json 使用

這次帶給大家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

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1667
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1255
24
crystaldiskmark是什麼軟體? -crystaldiskmark如何使用? crystaldiskmark是什麼軟體? -crystaldiskmark如何使用? Mar 18, 2024 pm 02:58 PM

CrystalDiskMark是一款適用於硬碟的小型HDD基準測試工具,可快速測量順序和隨機讀取/寫入速度。接下來就讓小編為大家介紹一下CrystalDiskMark,以及crystaldiskmark如何使用吧~一、CrystalDiskMark介紹CrystalDiskMark是一款廣泛使用的磁碟效能測試工具,用於評估機械硬碟和固態硬碟(SSD)的讀取和寫入速度和隨機I/O性能。它是一款免費的Windows應用程序,並提供用戶友好的介面和各種測試模式來評估硬碟效能的不同方面,並被廣泛用於硬體評

foob​​ar2000怎麼下載? -foobar2000怎麼使用 foob​​ar2000怎麼下載? -foobar2000怎麼使用 Mar 18, 2024 am 10:58 AM

foob​​ar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? Apr 26, 2024 am 09:40 AM

MetaMask(中文也叫小狐狸錢包)是一款免費的、廣受好評的加密錢包軟體。目前,BTCC已支援綁定MetaMask錢包,綁定後可使用MetaMask錢包進行快速登錄,儲值、買幣等,且首次綁定還可獲得20USDT體驗金。在BTCCMetaMask錢包教學中,我們將詳細介紹如何註冊和使用MetaMask,以及如何在BTCC綁定並使用小狐狸錢包。 MetaMask錢包是什麼? MetaMask小狐狸錢包擁有超過3,000萬用戶,是當今最受歡迎的加密貨幣錢包之一。它可免費使用,可作為擴充功能安裝在網絡

網易信箱大師怎麼用 網易信箱大師怎麼用 Mar 27, 2024 pm 05:32 PM

網易郵箱,作為中國網友廣泛使用的一種電子郵箱,一直以來以其穩定、高效的服務贏得了用戶的信賴。而網易信箱大師,則是專為手機使用者打造的信箱軟體,它大大簡化了郵件的收發流程,讓我們的郵件處理變得更加便利。那麼網易信箱大師該如何使用,具體又有哪些功能呢,下文中本站小編將為大家帶來詳細的內容介紹,希望能幫助到大家!首先,您可以在手機應用程式商店搜尋並下載網易信箱大師應用程式。在應用寶或百度手機助手中搜尋“網易郵箱大師”,然後按照提示進行安裝即可。下載安裝完成後,我們打開網易郵箱帳號並進行登錄,登入介面如下圖所示

百度網盤app怎麼用 百度網盤app怎麼用 Mar 27, 2024 pm 06:46 PM

在如今雲端儲存已成為我們日常生活和工作中不可或缺的一部分。百度網盤作為國內領先的雲端儲存服務之一,憑藉其強大的儲存功能、高效的傳輸速度以及便捷的操作體驗,贏得了廣大用戶的青睞。而且無論你是想要備份重要文件、分享資料,還是在線上觀看影片、聽取音樂,百度網盤都能滿足你的需求。但很多用戶可能對百度網盤app的具體使用方法還不了解,那麼這篇教學就將為大家詳細介紹百度網盤app如何使用,還有疑惑的用戶們就快來跟著本文詳細了解一下吧!百度雲網盤怎麼用:一、安裝首先,下載並安裝百度雲軟體時,請選擇自訂安裝選

教你使用 iOS 17.4「失竊裝置保護」新進階功能 教你使用 iOS 17.4「失竊裝置保護」新進階功能 Mar 10, 2024 pm 04:34 PM

Apple在周二推出了iOS17.4更新,為iPhone帶來了一系列新功能和修復。這次更新包含了全新的表情符號,同時歐盟用戶也能夠下載其他應用程式商店。此外,更新還加強了對iPhone安全性的控制,引入了更多的「失竊設備保護」設定選項,為用戶提供更多選擇和保障。 "iOS17.3首次引入了「失竊設備保護」功能,為用戶的敏感資料增加了額外的安全保障。當用戶不在家等熟悉地點時,該功能要求用戶首次輸入生物特徵信息,並在一小時後再次輸入資訊才能存取和更改某些數據,如修改AppleID密碼或關閉失竊設備保護功能

PHP 數組轉 JSON 的效能最佳化技巧 PHP 數組轉 JSON 的效能最佳化技巧 May 04, 2024 pm 06:15 PM

PHP數組轉JSON的效能最佳化方法包括:使用JSON擴充和json_encode()函數;新增JSON_UNESCAPED_UNICODE選項以避免字元轉義;使用緩衝區提高循環編碼效能;快取JSON編碼結果;考慮使用第三方JSON編碼庫。

小米汽車app怎麼用 小米汽車app怎麼用 Apr 01, 2024 pm 09:19 PM

小米汽車軟體提供遠端車控功能,讓使用者可以透過手機或電腦遠端控制車輛,例如開關車輛的門窗、啟動引擎、控制車輛的空調和音響等,下文就是這個軟體的使用及內容,一起了解下吧。小米汽車app功能及使用方法大全1、小米汽車app在3月25日上線蘋果AppStore,現在安卓手機的應用商店中也可以下載了;購車:了解小米汽車核心亮點和技術參數,可預約試駕、配置訂購您的小米汽車,支援線上處理提車待辦事項。 3.社群:了解小米汽車品牌資訊,交流用車體驗,分享精彩車生活;4、車控:手機就是遙控器,遠端控制,即時安防,輕

See all articles