0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么JSON将逐渐取代XML?

共熵服务中心 来源:未知 2022-11-21 20:15 次阅读

文章转发自51CTO 开源基础软件社区 OpenHarmony成长计划啃论文俱乐部【FFH】OpenHarmony啃论文成长计划---为什么JSON将逐渐取代XML?

1.关于作者

大家好!我是来自深圳技术大学FSR(编者注:FidelityFX Super Resolution超分辨率技术的缩写)实验室的同学,标题FFH就是FSRlab For Harmony!并且我也正在参加OpenHarmony成长计划从论文到开源提交研究,以后我们也会陆续在这个社区记录学习心得和体会。

在OpenHarmony成长计划啃论文俱乐部里,FHH小组同学们与华为、软通动力、润和软件、拓维信息、深开鸿等公司一起,学习和研究序列化相关技术…


2. 引言

相信大家不管是在鸿蒙应用开发,web开发或者小程序开发,都会用JSON(编者注:JavaScript Object Notation)或者XML(编者注:Extensible Markup Language 可扩展标记语言)进行数据的传输,大家对这两个技术的使用并不陌生,但是我们往往只是局限在使用上,所以在阐述为什么XML会被JSON取代之前,我想先把这两个东西的起源和由来都给大家简单的科普一遍。


3. XML

3.1标记型语言

讲XML之前,我们先来了解一下标记型语言,我就用通俗地语言描述一下,比如我现在要写一篇博客告诉你们为什么XML会被JSON取代,那这篇博客里面会有标题,二级标题,代码段,高亮文本等等,这些最终都会显示在网站上。

那么问题来了,浏览器怎么知道我显示地文字是标题还是高亮文本…

于是就有了Markdown这门标记语言,它就是用各种标记符号说明了哪里是标题,哪里是高亮文本。说白了,标记语言就是为了让冗杂的数据结构化,使用标记语言后,能让计算机和人能清晰辨别各类数据,如下例子,用#来标记一级标题,``内可以放高亮文本。比如网页能按照标题,段落,图片呈现,都得归功于标记型语言HTML。

# 标题
`高亮文本`

3.2XML起源

最早在1969年,IBM开发了第一种文档描述语言,用来解决不同系统中文档格式不同的问题,把这种标记语言称为通用标记语言GML(Generalized Markup Language),后面这门语言也被不断改进:

GML(1969)—>SGML(1986 国际标准化组织采纳)—>SGML(2018改进并完善)

SGML(编者注:Standard Generalized Markup Language 标准通用标记语言的缩写)具有相当高的规范性和可扩展性,但是就是因为规范多,导致开发,学习,维护的成本就很高。

到了1989年欧洲粒子物理实验室的研究员在SGML的基础上,提出了HTML(编者注:HyperText Markup Language 超文本标记语言的缩写),一种超文本的标记语言,简单,通用,语法要求宽松(可以嵌套使用)。

然后随着Web得发展,传输过程中负载的数据量越来越大,如果没有结构化数据的话,处理传输的数据消耗会非常非常大,而且非常麻烦,而HTML重点是对于数据的显示,不关心所描述的数据结构,缺乏对文档数据含义的确切描述,不能满足对各类信息的存储,传递和搜索的需求,基于以上需求,又一次在SGML的基础之上,简化出一种规范,1996年,提出了另一种标记型语言命名为XML(可扩展标记语言),就这样,XML出现了。XHTML(编者注:Extensible HyperText Markup Language 可扩展超文本标记语言的缩写)是基于XML的一种语法更加严格的标记语言。

3.3XML示例

比如A公司要获取到B公司名字叫Hagon的员工个人信息,这时B公司接受到A公司的请求后,就给A公司传输发送了如下XML格式数据:

<title>员工信息title>
<person id="666">
<name>Hagonname>
<age>66<age>
<sex>sex>
<job>头铁前端工程师job>
person>

因为结构清晰,A公司拿到数据后很方便地进行了处理。

3.4XML的瓶颈

虽然XML标准本身简单,但与XML相关的标准却种类繁多,W3C制定的相关标准就有二十多个,采用XML制定的重要的电子商务标准就有十多个。

随着AJax(之前叫XMLHTTP,2005年后才叫Ajax)技术的流行,XML的弊端也越来越显现:大家都知道XML实现是基于DOM(编者注:Document Object Model 文档对象模型的缩写)树实现的,而DOM在各种浏览器中的实现细节不尽相同,所以XML的跨浏览器兼容性并不好,所以急需一种新的数据负载格式集成到HTML页面中以满足Ajax的要求。

这就到了我们要讲的JSON。


4. JSON

4.1JSON的诞生

前面我们说了随着Ajax的流行,而各种浏览器对DOM的实现细节不尽相同,所以会出现兼容性问题,这对前端开发同学来讲真的是灾难。因为一个功能可能需要用代码去兼容各种不同的浏览器,还要调试,工作量巨大。

但是问题总有办法能解决,那就利用所有主流浏览器中的一种通用组件——JavaScript引擎。这样只要创造一种JavaScript引擎能识别的数据格式就可以啦!

然后就诞生了JavaScript Object Notation (JSON),它是一种轻量级的、基于文本的、独立于语言的数据交换格式,它源于ECMAScript编程语言标准。

4.2JSON示例

也是上一个员工信息的例子,用JSON就可以表示为:

{
"title":"员工信息",
"id":666,
"name":"Hagon",
"age":"66",
"sex":"男",
"job":"头铁前端工程师"
}

第一点可以看到,可以看到没有像XML一样有太多嵌套的标签,都是以类似键值对的形式表示,结构简单。

第二点,在编写XML时,第一行需要定义XML的版本,而JSON不存在版本问题,格式永远不变。


5.XML与JSON的数据对比

说了那么多纸上的白话,接下来用数据说话。

5.1场景介绍

场景由一系列较小的试验组成,这些试验根据我们的每一项指标来确定JSON和XML在统计上是否不同。采用均值比较消耗时间检验。我们将20000、40000、60000、80000和100000个编码对象发送到服务器,并收集每种情况的指标。表3、4和5显示了从这些试验中获得的指标。

5.2时间消耗

从下面这张表格上,不难看出XML处理相同数据的时间消耗大约是JSON的30倍。

5.3CPU及内存利用率

下面两表分别是JSON和XML的CPU和内存利用率数据。

对应的图形化表达如下:从左到右依次是用户CPU利用率的平均百分比,系统CPU利用率的平均百分比和内存利用率的平均百分比。

可以看出,Figure3显示了JSON每次试验的平均CPU和内存利用率。图4展示了XML每次试验的平均CPU和内存利用率。Figure5通过在同一个图上绘制Figure3和Figure4(方便对比),说明了JSON的资源利用率和XML的资源利用率之间的差异。上图数据表明,XML使用的用户CPU利用率整体上明显低于JSON。JSON和XML编码的传输在服务器上使用的内存量几乎相同(图中表面XML内存利用率的浅蓝色折线被重叠遮住了)。

5.4总结

在上面的实验数据可以看到,JSON的性能明显强于XML。

XML与JSON在web不断发展且传输数据量日益增大的背景下, 在要求算力的时代下,JSON毫无疑问会是更加优秀的一方。并且现在也又很多JSON的解析器,比如Gson,FastJson,Jackson等,这些解析器也在不断助力JSON的发展。

6.参考文献

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 成长计划—“啃论文俱乐部”(以下简称“啃论文俱乐部”)是在 2022年 1 月 11 日的一次日常活动中诞生的。截至 3 月 31 日,啃论文俱乐部已有 87 名师生和企业导师参与,目前共有十二个技术方向并行探索,每个方向都有专业的技术老师带领同学们通过啃综述论文制定技术地图,按“降龙十八掌”的学习方法编排技术开发内容,并通过专业推广培养高校开发者成为软件技术学术级人才。


啃论文俱乐部的宗旨是希望同学们在开源活动中得到软件技术能力提升、得到技术写作能力提升、得到讲解技术能力提升。大学一年级新生〇门槛参与,已有俱乐部来自多所高校的大一同学写出高居榜首的技术文章。


如今,搜索“啃论文”,人们不禁想到、而且看到的都是我们——OpenHarmony 成长计划—“啃论文俱乐部”的产出。






OpenHarmony开源与开发者成长计划—“啃论文俱乐部”学习资料合集


1)入门资料:啃论文可以有怎样的体验

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


2)操作办法:怎么从啃论文到开源提交以及深度技术文章输出https://docs.qq.com/slide/DY05kbGtsYVFmcUhU


3)企业/学校/老师/学生为什么要参与 & 啃论文俱乐部的运营办法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq


4)往期啃论文俱乐部同学分享会精彩回顾:

同学分享会No1.成长计划啃论文分享会纪要(2022/02/18)https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY

同学分享会No.2 成长计划啃论文分享会纪要(2022/03/11)https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF

同学们分享会No.3 成长计划啃论文分享会纪要(2022/03/25)

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


现在,你是不是也热血沸腾,摩拳擦掌地准备加入这个俱乐部呢?当然欢迎啦!啃论文俱乐部向任何对开源技术感兴趣的大学生开发者敞开大门。



扫码添加 OpenHarmony 高校小助手,加入“啃论文俱乐部”微信群


后续,我们会在服务中心公众号陆续分享一些 OpenHarmony 开源与开发者成长计划—“啃论文俱乐部”学习心得体会和总结资料。记得呼朋引伴来看哦。

























原文标题:为什么JSON将逐渐取代XML?

文章出处:【微信公众号:开源技术服务中心】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源技术
    +关注

    关注

    0

    文章

    389

    浏览量

    7953
  • OpenHarmony
    +关注

    关注

    25

    文章

    3726

    浏览量

    16376

原文标题:为什么JSON将逐渐取代XML?

文章出处:【微信号:开源技术服务中心,微信公众号:共熵服务中心】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    think-cell——使用JSON数据实现自动化(一)

    您可以使用 JSON 中的数据来复制最初作为模板创建的图表,并为其提供新的数据表。您可以控制使用特定模板构建新演示文稿的顺序。模板也可以多次使用。 PowerPoint 模板和 JSON 数据都可以
    的头像 发表于 01-02 13:37 48次阅读
    think-cell——使用<b class='flag-5'>JSON</b>数据实现自动化(一)

    JSON协议是什么,物联网中的RTU中如何使用JSON协议和服务器交互

    一 概述 1.1 什么是 JSON JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程
    的头像 发表于 09-25 16:14 859次阅读
    <b class='flag-5'>JSON</b>协议是什么,物联网中的RTU中如何使用<b class='flag-5'>JSON</b>协议和服务器交互

    多路复用器取代继电器应用说明

    电子发烧友网站提供《多路复用器取代继电器应用说明.pdf》资料免费下载
    发表于 09-11 10:05 0次下载
    多路复用器<b class='flag-5'>将</b><b class='flag-5'>取代</b>继电器应用说明

    可以使用JSONprov-config参数从网页发送到esp8266吗?

    请求。所以另一个意识形态。为什么不在Protocomm之外制作另一个简单的httpd/task来监听GET请求呢?而且它不起作用 我该怎么办,我该怎么办?请。 其他问题。我可以使用 JSON prov-config 参数从网页发送到 esp8266 吗?
    发表于 07-09 07:41

    鸿蒙语言基础类库:ohos.convertxml xml转换JavaScript

    转换xml文本为JavaScript对象。
    的头像 发表于 07-08 15:54 436次阅读
    鸿蒙语言基础类库:ohos.convertxml  <b class='flag-5'>xml</b>转换JavaScript

    微软Windows 10/11系统新增PowerToys AI高级粘贴功能

    以C++到Python的转化为例,只需轻松复制一段C++代码,再按下特定快捷键即可完成自动化转换。此外,微软还在Build 2024开发者大会上展示了如何利用PowerToysXML快速转换为JSON
    的头像 发表于 05-28 10:39 709次阅读

    扎心灵魂小拷问:有了AI编写代码之后,软件工程师会被AI取代吗?

    软件开发者们有很多让他们焦虑的事情。他们最担心的不再是如何用他们最喜欢的编程语言(C、C++、Erlang、Java等)表达最新的算法。相反,这种担忧正逐渐被人工智能(AI)所取代。 在这里,我们探讨AI编写代码的过程,并回
    的头像 发表于 05-24 19:17 665次阅读
    扎心灵魂小拷问:有了AI编写代码之后,软件工程师会被AI<b class='flag-5'>取代</b>吗?

    PLC设备通过智能网关采用HTTP协议JSON文件对接MES、ERP等系统平台

    )配置JSON文件的字段与PLC寄存器地址等参数即可。 智能网关IGT-DSER支持POST/GET/PUT等多种方法,可同时作为HTTP协议的客户端和服务端。作为客户端通讯时JSON文件提交
    发表于 05-13 12:04

    OpenHarmony语言基础类库【@ohos.xml (xml解析与生成)】

    XML文本转换为JavaScript对象、以及XML文件生成和解析的一系列接口。
    的头像 发表于 05-08 17:05 867次阅读

    PLC采用HTTP协议JSON文件对接MES等服务系统平台

    文件的字段与PLC寄存器地址,配置URL即可。支持POST/GET/PUT等多种方法。智能网关IGT-DSER可同时作为HTTP协议的客户端和服务端。作为客户端通讯时JSON文件提交给HTTP
    发表于 03-25 14:25

    【JAVA UI】【HarmonyOS】【Demo】 鸿蒙如何进行 xml 解析

    【鸿蒙】鸿蒙如何进行数据解析 【问题描述】有时候我们从服务器获取是 xml 格式数据,我们需要将 xml 转化成 model 对象,该如何使用呢?下面举个例子说明一下,分以下几步进行 1.准备条件
    的头像 发表于 02-19 15:59 580次阅读
    【JAVA UI】【HarmonyOS】【Demo】 鸿蒙如何进行 <b class='flag-5'>xml</b> 解析

    XML在HarmonyOS中的生成,解析与转换(下)

    一、XML 解析 对于以 XML 作为载体传递的数据,实际使用中需要对相关的节点进行解析,一般包括解析 XML 标签和标签值、解析 XML 属性和属性值、解析
    的头像 发表于 02-18 10:07 753次阅读

    XML 在 HarmonyOS 中的生成,解析与转换(上)

    一、XML 概述 XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是 Web 应用程序中经常使用的数据。XML 并不预定义标记。因此,XML
    的头像 发表于 02-18 09:35 671次阅读

    鸿蒙OS开发-(用xml写查询语句+xml使用)

    在C#中我们常用来当做一个小型的数据库来使用,我们可以信息保存在XML文档中,或者从XML文档中获取数据。这样就必须使用到XML文档的数据读取。
    的头像 发表于 01-26 17:51 662次阅读

    PLC从HTTP服务端获取JSON文件,解析数据到寄存器

    智能网关IGT-DSER集成了多种PLC协议,方便实现各种PLC与HTTP服务端之间通讯。通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可采用POST命令,JSON
    发表于 01-24 09:47