|
|
|
|
|
JSON(JavaScript Object Notation)是一種數(shù)據(jù)交換格式,XML(eXtensible Markup Language)是一種自定義標(biāo)記語言,用于交換數(shù)據(jù)并可以執(zhí)行許多其他操作,例如數(shù)據(jù)驗(yàn)證。JSON 和 XML 都用于以易于理解的格式存儲(chǔ)和交換數(shù)據(jù)。幾乎所有編程語言,如Python、JavaScript、Ruby 以及各種 API(應(yīng)用程序編程接口)都有 JSON 和 XML 解析器,通過這些解析器可以交換數(shù)據(jù)。盡管使用 XML 和 JSON 的目的相同,但它們都有各自的操作方式,可以在不同的場(chǎng)景中使用。
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)括起來,即{}
,而鍵和值用冒號(hào)分隔,即:
,每個(gè)鍵值對(duì)用逗號(hào)分隔。
例子
{
"book_name" : "The Alchemist",
"author" : "Paulo Coelho",
"genre" : "Adventure Fiction",
}
上面是存儲(chǔ)與書籍相關(guān)的數(shù)據(jù)的鍵值對(duì)。在這里,book_name、author和Genre是鍵,它們的相關(guān)值在 values 部分中。
JSON 中的數(shù)組就像任何其他編程語言中的數(shù)組一樣。JSON 數(shù)組是一個(gè)對(duì)象列表,用方括號(hào)括起來,即[]
。存儲(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)在陳列室中。
例子:
<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ù)值。
例子:
<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)簽位于樹的根部。
例子:
{
"student": [
{
"id":"01",
"name": "Tom",
"lastname": "Price"
},
{
"id":"02",
"name": "Nick",
"lastname": "Thameson"
},
{
"id":"03",
"name": "Ron",
"lastname": "Weasley"
}
]
}
這里,學(xué)生是以鍵值對(duì)的形式存儲(chǔ)學(xué)生信息的數(shù)組。
現(xiàn)在讓我們?cè)敿?xì)看看 XML 與 JSON:
JSON | XML |
---|---|
JSON 代表 JavaScript 對(duì)象表示法。 | XML 代表可擴(kuò)展標(biāo)記語言。 |
JSON 文件以.json擴(kuò)展名存儲(chǔ)。 | XML 文件以.xml擴(kuò)展名存儲(chǔ)。 |
它是從Javascript擴(kuò)展而來的。 | 它是從SGML(標(biāo)準(zhǔn)通用標(biāo)記語言)擴(kuò)展而來的。 |
它是一種使用鍵值對(duì)表示對(duì)象的方法。 | 它是一種標(biāo)記語言,使用標(biāo)記結(jié)構(gòu)來表示數(shù)據(jù)項(xiàng)。 |
JSON 是面向?qū)ο?/strong>的,因?yàn)樗?javascript 對(duì)象的文本表示。它基本上是 JavaScript Notation 中的一個(gè)對(duì)象。 | XML 是面向文檔的。XML 從 SGML 擴(kuò)展而來,保留了其作為文檔格式的原有優(yōu)勢(shì),并支持文檔表示所需的混合標(biāo)記。 |
以數(shù)組和鍵值對(duì)形式存儲(chǔ)在 JSON 中的數(shù)據(jù)。 | XML 以標(biāo)簽和屬性的形式存儲(chǔ)數(shù)據(jù)。 |
與 XML 相比,JSON 文件由于其簡(jiǎn)單的語法而易于理解。 | 由于標(biāo)簽結(jié)構(gòu)復(fù)雜,XML 文件與 JSON 相比難以閱讀和解釋。 |
它不支持評(píng)論。 | 它支持評(píng)論。 |
它不支持命名空間和元數(shù)據(jù)。 | 它支持命名空間和元數(shù)據(jù)。 |
JSON 文件占用較小的大小,因?yàn)樗鼈儧]有標(biāo)簽。 | XML 文檔體積龐大且體積龐大。它的標(biāo)簽結(jié)構(gòu)使它們看起來很復(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 流行的主要原因之一是越來越多地使用 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ù)。 |
相關(guān)文章