技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

[示例]詳解JSON和XML的相似及區(qū)別之處

作者:admin    時(shí)間:2022-5-26 8:12:37    瀏覽:

JSON(JavaScript Object Notation)是一種數(shù)據(jù)交換格式,XML(eXtensible Markup Language)是一種自定義標(biāo)記語(yǔ)言,用于交換數(shù)據(jù)并可以執(zhí)行許多其他操作,例如數(shù)據(jù)驗(yàn)證。JSON 和 XML 都用于以易于理解的格式存儲(chǔ)和交換數(shù)據(jù)。幾乎所有編程語(yǔ)言,如Python、JavaScript、Ruby 以及各種 API(應(yīng)用程序編程接口)都有 JSON 和 XML 解析器,通過(guò)這些解析器可以交換數(shù)據(jù)。盡管使用 XML 和 JSON 的目的相同,但它們都有各自的操作方式,可以在不同的場(chǎng)景中使用。

[示例]詳解JSON和XML的相似及區(qū)別之處

JSON是什么

  • JavaScript Object Notation (JSON)是一種數(shù)據(jù)交換格式。簡(jiǎn)單來(lái)說(shuō),JSON 是一種以人類可讀文本存儲(chǔ)和傳輸數(shù)據(jù)對(duì)象的文件格式。
  • 它是一種輕量級(jí)且獨(dú)立于語(yǔ)言(即 JSON 不使用任何編程語(yǔ)言的語(yǔ)法,并且其功能不依賴于任何編程語(yǔ)言)的數(shù)據(jù)交換格式,用于將數(shù)據(jù)發(fā)送到各種 API。
  • JSON 語(yǔ)法源自 javascript 編程語(yǔ)言,但用于讀取和生成 JSON 數(shù)據(jù)的代碼可以用任何編程語(yǔ)言編寫,因?yàn)樗?dú)立于語(yǔ)言。而且人類很容易閱讀和寫作。
  • 所有 JSON 文件都以.json擴(kuò)展名保存。
  • JSON 文件可以存儲(chǔ)數(shù)據(jù)類型為 string、number、boolean、null 等的數(shù)據(jù)。
  • JSON 使用 JSON 對(duì)象和 JSON 數(shù)組在Web上存儲(chǔ)和傳輸數(shù)據(jù)。本文將進(jìn)一步解釋 JSON 對(duì)象和 JSON 數(shù)組。

1. JSON 對(duì)象:

JSON 對(duì)象用于在 Web 上存儲(chǔ)和傳輸數(shù)據(jù)。JSON 中的對(duì)象以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)。鍵值對(duì)是相關(guān)元素,其中鍵是定義數(shù)據(jù)集的常量,而值是該數(shù)據(jù)集的變量。例如。“color”可以是一個(gè)鍵和顏色,如“blue”、“red”等。可以是值。

JSON 對(duì)象中的鍵應(yīng)該是字符串,值可以是任何有效的 JSON 數(shù)據(jù)類型。JSON 對(duì)象用大括號(hào)括起來(lái),即{},而鍵和值用冒號(hào)分隔,即:,每個(gè)鍵值對(duì)用逗號(hào)分隔。

例子

{
 "book_name" : "The Alchemist",
 "author" : "Paulo Coelho",
 "genre" : "Adventure Fiction",
}

上面是存儲(chǔ)與書籍相關(guān)的數(shù)據(jù)的鍵值對(duì)。在這里,book_name、authorGenre是鍵,它們的相關(guān)值在 values 部分中。

2. JSON 數(shù)組:

JSON 中的數(shù)組就像任何其他編程語(yǔ)言中的數(shù)組一樣。JSON 數(shù)組是一個(gè)對(duì)象列表,用方括號(hào)括起來(lái),即[]。存儲(chǔ)在 JSON 數(shù)組中的值可以是字符串、數(shù)字、對(duì)象、布爾值或 null 的數(shù)據(jù)類型。JSON 數(shù)組可以是 JSON 對(duì)象的列表,這意味著可以將多個(gè)鍵值對(duì)存儲(chǔ)在單個(gè)數(shù)組中。

例子:

[
    {
        "id" : "1"
        "name" : "Mercedes Benz",
        "available" : true
    },
    {
        "id" : "2"
        "name" : "BMW",
        "available" : true
    }
    {
        "id" : "3"
        "name" : "Bentley",
        "available" : false
    }
]

上面的數(shù)組顯示了汽車陳列室中汽車的可用性。數(shù)組的每個(gè)元素都是一個(gè) JSON 對(duì)象,它以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)。在這里,這些對(duì)象具有有關(guān)不同汽車的信息,例如它們的 ID、名稱以及它們是否出現(xiàn)在陳列室中。

使用 JSON 的優(yōu)勢(shì)

  • 由于語(yǔ)法簡(jiǎn)單,易于讀寫。
  • 所有瀏覽器都支持并被JavaScript識(shí)別。
  • 幾乎可以與所有編程語(yǔ)言一起使用,并為所有瀏覽器提供支持。
  • 通過(guò)瀏覽器傳輸 JSON 文件要快得多。
  • 由于 javascript 的日益普及,JSON 的使用一直在增加。
  • JSON 支持不同的數(shù)據(jù)類型和鍵值對(duì),使其易于理解。

使用 JSON 的缺點(diǎn)

  • JSON 不支持命名空間,無(wú)法擴(kuò)展。
  • 它缺乏格式驗(yàn)證,這意味著不正確的數(shù)據(jù)結(jié)構(gòu)可以傳遞到您的API中。
  • 與 XML 相比,JSON 的安全性較低。

XML是什么

  • XML 代表可擴(kuò)展標(biāo)記語(yǔ)言,旨在存儲(chǔ)數(shù)據(jù)并廣泛用于跨網(wǎng)絡(luò)和各種 API 分發(fā)數(shù)據(jù)。
  • 標(biāo)記語(yǔ)言是一組符號(hào),以便人類和計(jì)算機(jī)易于理解。
  • XML 旨在存儲(chǔ)和傳輸數(shù)據(jù),但不用于呈現(xiàn)數(shù)據(jù)。
  • 它被廣泛用于數(shù)據(jù)交換,因?yàn)閹缀趺糠N編程語(yǔ)言都有一個(gè)解析器。而且很容易從 XML 中獲取和驗(yàn)證數(shù)據(jù)。
  • XML 具有存儲(chǔ)命名空間的規(guī)定。命名空間是一種可以將元素和屬性名稱分配給組的機(jī)制。這使得區(qū)分來(lái)自不同來(lái)源的元素變得容易。
  • 元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù)。XML允許在其文件中存儲(chǔ)元數(shù)據(jù),從而提供有關(guān)文件來(lái)源或任何其他元數(shù)據(jù)的信息。在某種程度上,XML 標(biāo)簽也可以被認(rèn)為是元數(shù)據(jù),因?yàn)樗鼈兘忉屃怂鼈兂钟惺裁礃拥臄?shù)據(jù)/屬性。
  • 它廣泛用于當(dāng)今的虛擬世界,如電子銀行、網(wǎng)上購(gòu)物等。
  • XML 區(qū)分大小寫并使用標(biāo)簽來(lái)存儲(chǔ)數(shù)據(jù)。
  • 在 XML 中處理數(shù)據(jù)的兩種方法是標(biāo)簽和屬性。
  • XML 中的標(biāo)簽類似于 HTML 中的標(biāo)簽。標(biāo)簽以 <> 開頭,以</>結(jié)尾。開始和結(jié)束標(biāo)記的名稱必須匹配。

例子:

<rainbow> 
    <violet> 1 </violet>
    <indigo> 2 </indigo>
    <blue> 3 </blue>  
    <green> 4 </green>
    <yellow> 5 </yellow>  
    <orange> 6 </orange>
    <red> 7 </red>
</rainbow>

上面的示例讓我們了解了 XML 文件格式以及標(biāo)簽在 XML 中的使用方式。這里的<rainbow>是主標(biāo)簽,還有其他子標(biāo)簽,如<violet>、<red> 顯示數(shù)值。 

使用 XML 的優(yōu)勢(shì)

  • XML 將數(shù)據(jù)與普通的HTML 文檔分開。
  • 它簡(jiǎn)化了平臺(tái)交換過(guò)程。
  • 支持不同的 API,幾乎每種編程語(yǔ)言都有 XML 解析器。
  • 可以在 XML 中創(chuàng)建用戶定義的標(biāo)簽。
  • XML 做了 JSON 做不到的事情——它可以修飾它并允許 Java 和 C++ 等語(yǔ)言為可能不是基于 Web 的應(yīng)用程序創(chuàng)建接口。

使用 XML 的缺點(diǎn)

  • XML 中使用的語(yǔ)法很復(fù)雜,并且使用標(biāo)記使其與其他基于 Web 的編程語(yǔ)言相似,這使其令人困惑。
  • XML 中沒(méi)有數(shù)據(jù)類型支持。
  • XML 文件很龐大并且需要更大的大小。

XML 與 JSON 的結(jié)構(gòu)

1. XML的結(jié)構(gòu)

  • XML 以標(biāo)簽和屬性兩種方式處理數(shù)據(jù)。
  • 這些標(biāo)簽區(qū)分大小寫。
  • XML 中的標(biāo)簽類似于 HTML 中的標(biāo)簽。標(biāo)簽以 <> 開頭,以</>結(jié)尾。開始和結(jié)束標(biāo)記的名稱必須匹配。
  • 標(biāo)簽名稱只能是字母、數(shù)字和下劃線,且標(biāo)簽名稱只能以字母開頭。

例子:

<root>  
  <child>  
    <subchild>.....</subchild>  
  </child>  
</root> 

以上是 XML 標(biāo)簽的結(jié)構(gòu)。它顯示了 XML 標(biāo)記的層次結(jié)構(gòu)。XML 遵循樹數(shù)據(jù)結(jié)構(gòu)。樹從根開始,分支到較低級(jí)別的樹。<root>標(biāo)簽位于樹的根部。

2. JSON的結(jié)構(gòu)

  • JSON 以 JSON 數(shù)組和 JSON 對(duì)象兩種方式處理數(shù)據(jù)。
  • JSON的數(shù)據(jù)結(jié)構(gòu)層次是map格式。因?yàn)樗幚礞I值對(duì)中的數(shù)據(jù)。
  • 它支持字符串、數(shù)字、布爾值、數(shù)組和空值等數(shù)據(jù)類型。
  • JSON 數(shù)組是一個(gè)對(duì)象列表,括在方括號(hào)中,即[]。
  • JSON 中的對(duì)象是將數(shù)據(jù)存儲(chǔ)在鍵值對(duì)中的字典。JSON 對(duì)象中的鍵應(yīng)該是字符串,值可以是任何有效的JSON 數(shù)據(jù)類型。
  • JSON 對(duì)象用大括號(hào)括起來(lái),即{},而鍵和值用冒號(hào)分隔,即:,每個(gè)鍵值對(duì)用逗號(hào)分隔。

例子:

{
  "student": [ 

     { 
        "id":"01", 
        "name": "Tom", 
        "lastname": "Price" 
     }, 

     { 
        "id":"02", 
        "name": "Nick", 
        "lastname": "Thameson" 
     },
     
     { 
        "id":"03", 
        "name": "Ron", 
        "lastname": "Weasley" 
     }
  ]   
}

這里,學(xué)生是以鍵值對(duì)的形式存儲(chǔ)學(xué)生信息的數(shù)組。

JSON 和 XML 之間的相似之處

  • JSON 和 XML 都具有在 Web 上存儲(chǔ)和傳輸數(shù)據(jù)的相同目的。
  • 這些是人類可讀的、易于理解的和自我描述的。
  • 兩者都有大多數(shù)編程語(yǔ)言和API的解析器。JSON 和 XML 中的代碼被轉(zhuǎn)換為使用它的編程語(yǔ)言的編譯器可以理解的代碼。
  • 可以使用 HTTP 請(qǐng)求從 Web 服務(wù)器獲取 JSON 和 XML 中的數(shù)據(jù)。HttpRequests用于從服務(wù)器請(qǐng)求數(shù)據(jù)。用于獲取數(shù)據(jù)的方法是GET、PUT和POST。
  • JSON 和 XML 支持層次結(jié)構(gòu),即它們將值存儲(chǔ)在值中。
  • JSON 和 XML 都是開源軟件,軟件代碼可公開訪問(wèn),任何人都可以查看、修改和分發(fā)代碼。

JSON 和 XML 的區(qū)別

現(xiàn)在讓我們?cè)敿?xì)看看 XML 與 JSON:

JSON XML
JSON 代表 JavaScript 對(duì)象表示法。 XML 代表可擴(kuò)展標(biāo)記語(yǔ)言。
JSON 文件以.json擴(kuò)展名存儲(chǔ)。 XML 文件以.xml擴(kuò)展名存儲(chǔ)。
它是從Javascript擴(kuò)展而來(lái)的。 它是從SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)擴(kuò)展而來(lái)的。
它是一種使用鍵值對(duì)表示對(duì)象的方法。 它是一種標(biāo)記語(yǔ)言,使用標(biāo)記結(jié)構(gòu)來(lái)表示數(shù)據(jù)項(xiàng)。
JSON 是面向?qū)ο?/strong>的,因?yàn)樗?javascript 對(duì)象的文本表示。它基本上是 JavaScript Notation 中的一個(gè)對(duì)象。 XML 是面向文檔的。XML 從 SGML 擴(kuò)展而來(lái),保留了其作為文檔格式的原有優(yōu)勢(shì),并支持文檔表示所需的混合標(biāo)記。
以數(shù)組和鍵值對(duì)形式存儲(chǔ)在 JSON 中的數(shù)據(jù)。 XML 以標(biāo)簽和屬性的形式存儲(chǔ)數(shù)據(jù)。
與 XML 相比,JSON 文件由于其簡(jiǎn)單的語(yǔ)法而易于理解。 由于標(biāo)簽結(jié)構(gòu)復(fù)雜,XML 文件與 JSON 相比難以閱讀和解釋。
它不支持評(píng)論。 它支持評(píng)論。
它不支持命名空間和元數(shù)據(jù)。 它支持命名空間和元數(shù)據(jù)。
JSON 文件占用較小的大小,因?yàn)樗鼈儧](méi)有標(biāo)簽。 XML 文檔體積龐大且體積龐大。它的標(biāo)簽結(jié)構(gòu)使它們看起來(lái)很復(fù)雜。
JSON 在瀏覽器端技術(shù)中是首選,因?yàn)樗奈募梢栽诟痰臅r(shí)間內(nèi)傳輸。 XML 在服務(wù)器端技術(shù)中是首選,因?yàn)樗峁┝蓑?yàn)證數(shù)據(jù)的功能。
由于格式簡(jiǎn)單且文件大小較小, JSON不那么冗長(zhǎng)且速度更快。JSON 的這些特性使其在最近變得更加流行。JSON 流行的主要原因之一是越來(lái)越多地使用 Javascript。 XML 的復(fù)雜結(jié)構(gòu)使其解析速度慢并且需要更多的內(nèi)存。這降低了 XML 的流行度。但大多數(shù)情況下,由于高安全性和元數(shù)據(jù)規(guī)定,它是首選。
JSON 文件格式類似于地圖數(shù)據(jù)結(jié)構(gòu)。該映射類似于鍵/值對(duì),在需要解釋和可預(yù)測(cè)性時(shí)很有用。 XML 文件格式類似于樹數(shù)據(jù)結(jié)構(gòu)。表示數(shù)據(jù)的樹表示。這使得處理 XML 成為一項(xiàng)乏味且耗時(shí)的任務(wù)。

總結(jié)

  • JSON 與 XML 有許多相似之處和不同之處。
  • JSON 和 XML 都用于在 Web上傳輸數(shù)據(jù)。
  • 由于與 JavaScript 的關(guān)聯(lián),JSON 目前越來(lái)越受歡迎。
  • 作為一種標(biāo)記語(yǔ)言,XML 可以定義一組規(guī)則和結(jié)構(gòu)以使數(shù)據(jù)可互換。
  • JSON 是首選,因?yàn)榭梢酝ㄟ^(guò)瀏覽器輕松交付更快、更輕量級(jí)的文件。

相關(guān)文章

標(biāo)簽: JSON  xml  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */