0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么JSON將逐漸取代XML?

共熵服務(wù)中心 ? 來源:未知 ? 2022-11-21 20:15 ? 次閱讀

文章轉(zhuǎn)發(fā)自51CTO 開源基礎(chǔ)軟件社區(qū) OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂部【FFH】OpenHarmony啃論文成長(zhǎng)計(jì)劃---為什么JSON將逐漸取代XML?

1.關(guān)于作者

大家好!我是來自深圳技術(shù)大學(xué)FSR(編者注:FidelityFX Super Resolution超分辨率技術(shù)的縮寫)實(shí)驗(yàn)室的同學(xué),標(biāo)題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長(zhǎng)計(jì)劃從論文到開源提交研究,以后我們也會(huì)陸續(xù)在這個(gè)社區(qū)記錄學(xué)習(xí)心得和體會(huì)。

在OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂部里,F(xiàn)HH小組同學(xué)們與華為、軟通動(dòng)力、潤(rùn)和軟件、拓維信息、深開鴻等公司一起,學(xué)習(xí)和研究序列化相關(guān)技術(shù)…


2. 引言

相信大家不管是在鴻蒙應(yīng)用開發(fā),web開發(fā)或者小程序開發(fā),都會(huì)用JSON(編者注:JavaScript Object Notation)或者XML(編者注:Extensible Markup Language 可擴(kuò)展標(biāo)記語言)進(jìn)行數(shù)據(jù)的傳輸,大家對(duì)這兩個(gè)技術(shù)的使用并不陌生,但是我們往往只是局限在使用上,所以在闡述為什么XML會(huì)被JSON取代之前,我想先把這兩個(gè)東西的起源和由來都給大家簡(jiǎn)單的科普一遍。


3. XML

3.1標(biāo)記型語言

講XML之前,我們先來了解一下標(biāo)記型語言,我就用通俗地語言描述一下,比如我現(xiàn)在要寫一篇博客告訴你們?yōu)槭裁碭ML會(huì)被JSON取代,那這篇博客里面會(huì)有標(biāo)題,二級(jí)標(biāo)題,代碼段,高亮文本等等,這些最終都會(huì)顯示在網(wǎng)站上。

那么問題來了,瀏覽器怎么知道我顯示地文字是標(biāo)題還是高亮文本…

于是就有了Markdown這門標(biāo)記語言,它就是用各種標(biāo)記符號(hào)說明了哪里是標(biāo)題,哪里是高亮文本。說白了,標(biāo)記語言就是為了讓冗雜的數(shù)據(jù)結(jié)構(gòu)化,使用標(biāo)記語言后,能讓計(jì)算機(jī)和人能清晰辨別各類數(shù)據(jù),如下例子,用#來標(biāo)記一級(jí)標(biāo)題,``內(nèi)可以放高亮文本。比如網(wǎng)頁能按照標(biāo)題,段落,圖片呈現(xiàn),都得歸功于標(biāo)記型語言HTML。

# 標(biāo)題
`高亮文本`

3.2XML起源

最早在1969年,IBM開發(fā)了第一種文檔描述語言,用來解決不同系統(tǒng)中文檔格式不同的問題,把這種標(biāo)記語言稱為通用標(biāo)記語言GML(Generalized Markup Language),后面這門語言也被不斷改進(jìn):

GML(1969)—>SGML(1986 國(guó)際標(biāo)準(zhǔn)化組織采納)—>SGML(2018改進(jìn)并完善)

SGML(編者注:Standard Generalized Markup Language 標(biāo)準(zhǔn)通用標(biāo)記語言的縮寫)具有相當(dāng)高的規(guī)范性和可擴(kuò)展性,但是就是因?yàn)橐?guī)范多,導(dǎo)致開發(fā),學(xué)習(xí),維護(hù)的成本就很高。

到了1989年歐洲粒子物理實(shí)驗(yàn)室的研究員在SGML的基礎(chǔ)上,提出了HTML(編者注:HyperText Markup Language 超文本標(biāo)記語言的縮寫),一種超文本的標(biāo)記語言,簡(jiǎn)單,通用,語法要求寬松(可以嵌套使用)。

然后隨著Web得發(fā)展,傳輸過程中負(fù)載的數(shù)據(jù)量越來越大,如果沒有結(jié)構(gòu)化數(shù)據(jù)的話,處理傳輸?shù)臄?shù)據(jù)消耗會(huì)非常非常大,而且非常麻煩,而HTML重點(diǎn)是對(duì)于數(shù)據(jù)的顯示,不關(guān)心所描述的數(shù)據(jù)結(jié)構(gòu),缺乏對(duì)文檔數(shù)據(jù)含義的確切描述,不能滿足對(duì)各類信息的存儲(chǔ),傳遞和搜索的需求,基于以上需求,又一次在SGML的基礎(chǔ)之上,簡(jiǎn)化出一種規(guī)范,1996年,提出了另一種標(biāo)記型語言命名為XML(可擴(kuò)展標(biāo)記語言),就這樣,XML出現(xiàn)了。XHTML(編者注:Extensible HyperText Markup Language 可擴(kuò)展超文本標(biāo)記語言的縮寫)是基于XML的一種語法更加嚴(yán)格的標(biāo)記語言。

3.3XML示例

比如A公司要獲取到B公司名字叫Hagon的員工個(gè)人信息,這時(shí)B公司接受到A公司的請(qǐng)求后,就給A公司傳輸發(fā)送了如下XML格式數(shù)據(jù):

<title>員工信息title>
<person id="666">
<name>Hagonname>
<age>66<age>
<sex>sex>
<job>頭鐵前端工程師job>
person>

因?yàn)榻Y(jié)構(gòu)清晰,A公司拿到數(shù)據(jù)后很方便地進(jìn)行了處理。

3.4XML的瓶頸

雖然XML標(biāo)準(zhǔn)本身簡(jiǎn)單,但與XML相關(guān)的標(biāo)準(zhǔn)卻種類繁多,W3C制定的相關(guān)標(biāo)準(zhǔn)就有二十多個(gè),采用XML制定的重要的電子商務(wù)標(biāo)準(zhǔn)就有十多個(gè)。

隨著AJax(之前叫XMLHTTP,2005年后才叫Ajax)技術(shù)的流行,XML的弊端也越來越顯現(xiàn):大家都知道XML實(shí)現(xiàn)是基于DOM(編者注:Document Object Model 文檔對(duì)象模型的縮寫)樹實(shí)現(xiàn)的,而DOM在各種瀏覽器中的實(shí)現(xiàn)細(xì)節(jié)不盡相同,所以XML的跨瀏覽器兼容性并不好,所以急需一種新的數(shù)據(jù)負(fù)載格式集成到HTML頁面中以滿足Ajax的要求。

這就到了我們要講的JSON。


4. JSON

4.1JSON的誕生

前面我們說了隨著Ajax的流行,而各種瀏覽器對(duì)DOM的實(shí)現(xiàn)細(xì)節(jié)不盡相同,所以會(huì)出現(xiàn)兼容性問題,這對(duì)前端開發(fā)同學(xué)來講真的是災(zāi)難。因?yàn)橐粋€(gè)功能可能需要用代碼去兼容各種不同的瀏覽器,還要調(diào)試,工作量巨大。

但是問題總有辦法能解決,那就利用所有主流瀏覽器中的一種通用組件——JavaScript引擎。這樣只要?jiǎng)?chuàng)造一種JavaScript引擎能識(shí)別的數(shù)據(jù)格式就可以啦!

然后就誕生了JavaScript Object Notation (JSON),它是一種輕量級(jí)的、基于文本的、獨(dú)立于語言的數(shù)據(jù)交換格式,它源于ECMAScript編程語言標(biāo)準(zhǔn)。

4.2JSON示例

也是上一個(gè)員工信息的例子,用JSON就可以表示為:

{
"title":"員工信息",
"id":666,
"name":"Hagon",
"age":"66",
"sex":"男",
"job":"頭鐵前端工程師"
}

第一點(diǎn)可以看到,可以看到?jīng)]有像XML一樣有太多嵌套的標(biāo)簽,都是以類似鍵值對(duì)的形式表示,結(jié)構(gòu)簡(jiǎn)單。

第二點(diǎn),在編寫XML時(shí),第一行需要定義XML的版本,而JSON不存在版本問題,格式永遠(yuǎn)不變。


5.XML與JSON的數(shù)據(jù)對(duì)比

說了那么多紙上的白話,接下來用數(shù)據(jù)說話。

5.1場(chǎng)景介紹

場(chǎng)景由一系列較小的試驗(yàn)組成,這些試驗(yàn)根據(jù)我們的每一項(xiàng)指標(biāo)來確定JSON和XML在統(tǒng)計(jì)上是否不同。采用均值比較消耗時(shí)間檢驗(yàn)。我們將20000、40000、60000、80000和100000個(gè)編碼對(duì)象發(fā)送到服務(wù)器,并收集每種情況的指標(biāo)。表3、4和5顯示了從這些試驗(yàn)中獲得的指標(biāo)。

5.2時(shí)間消耗

從下面這張表格上,不難看出XML處理相同數(shù)據(jù)的時(shí)間消耗大約是JSON的30倍。

5.3CPU及內(nèi)存利用率

下面兩表分別是JSON和XML的CPU和內(nèi)存利用率數(shù)據(jù)。

對(duì)應(yīng)的圖形化表達(dá)如下:從左到右依次是用戶CPU利用率的平均百分比,系統(tǒng)CPU利用率的平均百分比和內(nèi)存利用率的平均百分比。

可以看出,F(xiàn)igure3顯示了JSON每次試驗(yàn)的平均CPU和內(nèi)存利用率。圖4展示了XML每次試驗(yàn)的平均CPU和內(nèi)存利用率。Figure5通過在同一個(gè)圖上繪制Figure3和Figure4(方便對(duì)比),說明了JSON的資源利用率和XML的資源利用率之間的差異。上圖數(shù)據(jù)表明,XML使用的用戶CPU利用率整體上明顯低于JSON。JSON和XML編碼的傳輸在服務(wù)器上使用的內(nèi)存量幾乎相同(圖中表面XML內(nèi)存利用率的淺藍(lán)色折線被重疊遮住了)。

5.4總結(jié)

在上面的實(shí)驗(yàn)數(shù)據(jù)可以看到,JSON的性能明顯強(qiáng)于XML。

XML與JSON在web不斷發(fā)展且傳輸數(shù)據(jù)量日益增大的背景下, 在要求算力的時(shí)代下,JSON毫無疑問會(huì)是更加優(yōu)秀的一方。并且現(xiàn)在也又很多JSON的解析器,比如Gson,F(xiàn)astJson,Jackson等,這些解析器也在不斷助力JSON的發(fā)展。

6.參考文獻(xiàn)

Comparison of JSON and XML data interchange formats: A case study
https://www.researchgate.net/publication/220922905_Comparison_of_JSON_and_XML_data_interchange_formats_A_case_study

<本文完>


寫在最后


OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂部”(以下簡(jiǎn)稱“啃論文俱樂部”)是在 2022年 1 月 11 日的一次日常活動(dòng)中誕生的。截至 3 月 31 日,啃論文俱樂部已有 87 名師生和企業(yè)導(dǎo)師參與,目前共有十二個(gè)技術(shù)方向并行探索,每個(gè)方向都有專業(yè)的技術(shù)老師帶領(lǐng)同學(xué)們通過啃綜述論文制定技術(shù)地圖,按“降龍十八掌”的學(xué)習(xí)方法編排技術(shù)開發(fā)內(nèi)容,并通過專業(yè)推廣培養(yǎng)高校開發(fā)者成為軟件技術(shù)學(xué)術(shù)級(jí)人才。


啃論文俱樂部的宗旨是希望同學(xué)們?cè)陂_源活動(dòng)中得到軟件技術(shù)能力提升、得到技術(shù)寫作能力提升、得到講解技術(shù)能力提升。大學(xué)一年級(jí)新生〇門檻參與,已有俱樂部來自多所高校的大一同學(xué)寫出高居榜首的技術(shù)文章。


如今,搜索“啃論文”,人們不禁想到、而且看到的都是我們——OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂部”的產(chǎn)出。






OpenHarmony開源與開發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂部”學(xué)習(xí)資料合集


1)入門資料:啃論文可以有怎樣的體驗(yàn)

https://docs.qq.com/slide/DY0RXWElBTVlHaXhi?u=4e311e072cbf4f93968e09c44294987d


2)操作辦法:怎么從啃論文到開源提交以及深度技術(shù)文章輸出https://docs.qq.com/slide/DY05kbGtsYVFmcUhU


3)企業(yè)/學(xué)校/老師/學(xué)生為什么要參與 & 啃論文俱樂部的運(yùn)營(yíng)辦法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq


4)往期啃論文俱樂部同學(xué)分享會(huì)精彩回顧:

同學(xué)分享會(huì)No1.成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/02/18)https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY

同學(xué)分享會(huì)No.2 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/11)https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF

同學(xué)們分享會(huì)No.3 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/25)

https://docs.qq.com/doc/DUm5pUEF3ck1VcG92?u=4e311e072cbf4f93968e09c44294987d


現(xiàn)在,你是不是也熱血沸騰,摩拳擦掌地準(zhǔn)備加入這個(gè)俱樂部呢?當(dāng)然歡迎啦!啃論文俱樂部向任何對(duì)開源技術(shù)感興趣的大學(xué)生開發(fā)者敞開大門。



掃碼添加 OpenHarmony 高校小助手,加入“啃論文俱樂部”微信群


后續(xù),我們會(huì)在服務(wù)中心公眾號(hào)陸續(xù)分享一些 OpenHarmony 開源與開發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂部”學(xué)習(xí)心得體會(huì)和總結(jié)資料。記得呼朋引伴來看哦。

























原文標(biāo)題:為什么JSON將逐漸取代XML?

文章出處:【微信公眾號(hào):開源技術(shù)服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開源技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    389

    瀏覽量

    7975
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3731

    瀏覽量

    16434

原文標(biāo)題:為什么JSON將逐漸取代XML?

文章出處:【微信號(hào):開源技術(shù)服務(wù)中心,微信公眾號(hào):共熵服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    think-cell——使用JSON數(shù)據(jù)實(shí)現(xiàn)自動(dòng)化(一)

    您可以使用 JSON 中的數(shù)據(jù)來復(fù)制最初作為模板創(chuàng)建的圖表,并為其提供新的數(shù)據(jù)表。您可以控制使用特定模板構(gòu)建新演示文稿的順序。模板也可以多次使用。 PowerPoint 模板和 JSON 數(shù)據(jù)都可以
    的頭像 發(fā)表于 01-02 13:37 ?84次閱讀
    think-cell——使用<b class='flag-5'>JSON</b>數(shù)據(jù)實(shí)現(xiàn)自動(dòng)化(一)

    JSON協(xié)議是什么,物聯(lián)網(wǎng)中的RTU中如何使用JSON協(xié)議和服務(wù)器交互

    一 概述 1.1 什么是 JSON JSON是JavaScript Object Notation的簡(jiǎn)稱,中文含義為“JavaScript 對(duì)象表示法”,它是一種數(shù)據(jù)交換的文本格式,而不是一種編程
    的頭像 發(fā)表于 09-25 16:14 ?952次閱讀
    <b class='flag-5'>JSON</b>協(xié)議是什么,物聯(lián)網(wǎng)中的RTU中如何使用<b class='flag-5'>JSON</b>協(xié)議和服務(wù)器交互

    多路復(fù)用器取代繼電器應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《多路復(fù)用器取代繼電器應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 10:05 ?0次下載
    多路復(fù)用器<b class='flag-5'>將</b><b class='flag-5'>取代</b>繼電器應(yīng)用說明

    可以使用JSONprov-config參數(shù)從網(wǎng)頁發(fā)送到esp8266嗎?

    請(qǐng)求。所以另一個(gè)意識(shí)形態(tài)。為什么不在Protocomm之外制作另一個(gè)簡(jiǎn)單的httpd/task來監(jiān)聽GET請(qǐng)求呢?而且它不起作用 我該怎么辦,我該怎么辦?請(qǐng)。 其他問題。我可以使用 JSON prov-config 參數(shù)從網(wǎng)頁發(fā)送到 esp8266 嗎?
    發(fā)表于 07-09 07:41

    鴻蒙語言基礎(chǔ)類庫:ohos.convertxml xml轉(zhuǎn)換JavaScript

    轉(zhuǎn)換xml文本為JavaScript對(duì)象。
    的頭像 發(fā)表于 07-08 15:54 ?456次閱讀
    鴻蒙語言基礎(chǔ)類庫:ohos.convertxml  <b class='flag-5'>xml</b>轉(zhuǎn)換JavaScript

    微軟Windows 10/11系統(tǒng)新增PowerToys AI高級(jí)粘貼功能

    以C++到Python的轉(zhuǎn)化為例,只需輕松復(fù)制一段C++代碼,再按下特定快捷鍵即可完成自動(dòng)化轉(zhuǎn)換。此外,微軟還在Build 2024開發(fā)者大會(huì)上展示了如何利用PowerToysXML快速轉(zhuǎn)換為JSON
    的頭像 發(fā)表于 05-28 10:39 ?727次閱讀

    扎心靈魂小拷問:有了AI編寫代碼之后,軟件工程師會(huì)被AI取代嗎?

    軟件開發(fā)者們有很多讓他們焦慮的事情。他們最擔(dān)心的不再是如何用他們最喜歡的編程語言(C、C++、Erlang、Java等)表達(dá)最新的算法。相反,這種擔(dān)憂正逐漸被人工智能(AI)所取代。 在這里,我們探討AI編寫代碼的過程,并回
    的頭像 發(fā)表于 05-24 19:17 ?685次閱讀
    扎心靈魂小拷問:有了AI編寫代碼之后,軟件工程師會(huì)被AI<b class='flag-5'>取代</b>嗎?

    ?PLC設(shè)備通過智能網(wǎng)關(guān)采用HTTP協(xié)議JSON文件對(duì)接MES、ERP等系統(tǒng)平臺(tái)

    )配置JSON文件的字段與PLC寄存器地址等參數(shù)即可。 智能網(wǎng)關(guān)IGT-DSER支持POST/GET/PUT等多種方法,可同時(shí)作為HTTP協(xié)議的客戶端和服務(wù)端。作為客戶端通訊時(shí)JSON文件提交
    發(fā)表于 05-13 12:04

    OpenHarmony語言基礎(chǔ)類庫【@ohos.xml (xml解析與生成)】

    XML文本轉(zhuǎn)換為JavaScript對(duì)象、以及XML文件生成和解析的一系列接口。
    的頭像 發(fā)表于 05-08 17:05 ?882次閱讀

    PLC采用HTTP協(xié)議JSON文件對(duì)接MES等服務(wù)系統(tǒng)平臺(tái)

    文件的字段與PLC寄存器地址,配置URL即可。支持POST/GET/PUT等多種方法。智能網(wǎng)關(guān)IGT-DSER可同時(shí)作為HTTP協(xié)議的客戶端和服務(wù)端。作為客戶端通訊時(shí)JSON文件提交給HTTP
    發(fā)表于 03-25 14:25

    【JAVA UI】【HarmonyOS】【Demo】 鴻蒙如何進(jìn)行 xml 解析

    【鴻蒙】鴻蒙如何進(jìn)行數(shù)據(jù)解析 【問題描述】有時(shí)候我們從服務(wù)器獲取是 xml 格式數(shù)據(jù),我們需要將 xml 轉(zhuǎn)化成 model 對(duì)象,該如何使用呢?下面舉個(gè)例子說明一下,分以下幾步進(jìn)行 1.準(zhǔn)備條件
    的頭像 發(fā)表于 02-19 15:59 ?603次閱讀
    【JAVA UI】【HarmonyOS】【Demo】 鴻蒙如何進(jìn)行 <b class='flag-5'>xml</b> 解析

    XML在HarmonyOS中的生成,解析與轉(zhuǎn)換(下)

    一、XML 解析 對(duì)于以 XML 作為載體傳遞的數(shù)據(jù),實(shí)際使用中需要對(duì)相關(guān)的節(jié)點(diǎn)進(jìn)行解析,一般包括解析 XML 標(biāo)簽和標(biāo)簽值、解析 XML 屬性和屬性值、解析
    的頭像 發(fā)表于 02-18 10:07 ?769次閱讀

    XML 在 HarmonyOS 中的生成,解析與轉(zhuǎn)換(上)

    一、XML 概述 XML(可擴(kuò)展標(biāo)記語言)是一種用于描述數(shù)據(jù)的標(biāo)記語言,旨在提供一種通用的方式來傳輸和存儲(chǔ)數(shù)據(jù),特別是 Web 應(yīng)用程序中經(jīng)常使用的數(shù)據(jù)。XML 并不預(yù)定義標(biāo)記。因此,XML
    的頭像 發(fā)表于 02-18 09:35 ?693次閱讀

    鴻蒙OS開發(fā)-(用xml寫查詢語句+xml使用)

    在C#中我們常用來當(dāng)做一個(gè)小型的數(shù)據(jù)庫來使用,我們可以信息保存在XML文檔中,或者從XML文檔中獲取數(shù)據(jù)。這樣就必須使用到XML文檔的數(shù)據(jù)讀取。
    的頭像 發(fā)表于 01-26 17:51 ?678次閱讀

    ?PLC從HTTP服務(wù)端獲取JSON文件,解析數(shù)據(jù)到寄存器

    智能網(wǎng)關(guān)IGT-DSER集成了多種PLC協(xié)議,方便實(shí)現(xiàn)各種PLC與HTTP服務(wù)端之間通訊。通過網(wǎng)關(guān)的參數(shù)配置軟件綁定JSON文件的字段與PLC寄存器地址,配置URL,即可采用POST命令,JSON
    發(fā)表于 01-24 09:47