乐趣区

关于json:为什么JSON将逐渐取代XML

@TOC

大家好!我是来自 深圳技术大学 FSR 实验室 的同学,题目 FFH 就是FSRlab For Harmony!并且我也正在加入OpenHarmony 成长打算从论文到开源提交钻研,当前咱们也会陆续在这个社区记录学习心得和领会。

引言

​ 置信大家不论是在鸿蒙利用开发,web 开发或者小程序开发,都会用 JSON 或者 XML 进行数据的传输,大家对这两个技术的应用并不生疏,然而咱们往往只是局限在应用上,所以在论述为什么 XML 会被 JSON 取代之前,我想先把这两个货色的起源和由来都给大家简略的科普一遍。

XML

标记型语言

​ 讲 XML 之前,咱们先来理解一下标记型语言,我就用艰深地语言形容一下,比方我当初要写一篇博客通知你们为什么 XML 会被 JSON 取代,那这篇博客外面会有题目,二级题目,代码段,高亮文本等等,这些最终都会显示在网站上。

​ 那么问题来了,浏览器怎么晓得我显示地文字是题目还是高亮文本 …

​ 于是就有了 Markdown 这门标记语言,它就是用各种标记符号阐明了哪里是题目,哪里是高亮文本。说白了,标记语言就是为了 让繁杂的数据结构化,应用标记语言后,能让计算机和人能清晰分别各类数据,如下例子,用 #来标记一级题目,“ 内能够放高亮文本。比方网页能依照题目,段落,图片出现,都得归功于标记型语言 HTML。

# 题目
` 高亮文本 `

XML 起源

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

GML(1969)————>SGML(1986 国际标准化组织驳回)————>SGML(2018 改良并欠缺)

​ SGML 具备相当高的规范性和可扩展性,然而就是因为标准多,导致开发,学习,保护的老本就很高。
到了 1989 年欧洲粒子物理实验室的研究员 在 SGML 的根底上,提出了HTML,一种超文本的标记语言,简略,通用,语法要求宽松(能够嵌套应用)。

​ 而后随着 Web 得倒退,传输过程中负载的数据量越来越大 ,如果没有结构化数据的话,解决传输的数据耗费会十分十分大,而且十分麻烦,而 HTML 重点是对于数据的显示,不关怀所形容的数据结构,不足对文档数据含意的确切形容,不能满足对各类信息的存储,传递和搜寻的需要,基于以上需要,又一次 在 SGML 的根底之上,简化出一种标准,1996 年,提出了另一种标记型语言命名为XML(可扩大标记语言),就这样,XML 呈现了。

例子

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

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

因为构造清晰,A 公司拿到数据后很不便地进行了解决。

XML 的瓶颈

​ 尽管 XML 规范自身简略,但与 XML 相干的规范却品种繁多,W3C 制订的相干规范就有 二十多个,采纳 XML 制订的重要的电子商务规范就有十多个。

​ 随着 AJax(之前叫 XMLHTTP,2005 年后才叫 Ajax) 技术的风行,XML 的弊病也越来越浮现:大家都晓得 XML 实现是基于 DOM 树实现的,而 DOM 在各种浏览器中的实现细节不尽相同,所以 XML 的跨浏览器兼容性并不好,所以急需一种新的数据负载格局集成到 HTML 页面中以满足 Ajax 的要求。

​ 这就到了咱们要讲的 JSON。

JSON

JSON 的诞生

​ 后面咱们说了随着 Ajax 的风行,而各种浏览器对 DOM 的实现细节不尽相同,所以会呈现兼容性问题,这对前端开发同学来讲真的是劫难。因为一个性能可能须要用代码去兼容各种不同的浏览器,还要调试,工作量微小。

​ 然而问题总有方法能解决,那就利用所有支流浏览器中的一种通用组件——JavaScript 引擎。这样只有发明一种 JavaScript 引擎能辨认的数据格式就能够啦!

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

实例

也是上一个员工信息的例子,用 JSON 就能够示意为:

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

第一点能够看到,能够看到没有像 XML 一样有太多嵌套的标签,都是以相似 键值对 的模式示意,构造简略。

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

XML 与 JSON 的数据比照

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

场景介绍

​ 场景由一系列较小的试验组成,这些试验依据咱们的每一项指标来确定 JSON 和 XML 在统计上是否不同。采纳均值比拟耗费工夫测验。咱们将 20000、40000、60000、80000 和 100000 个编码对象发送到服务器,并收集每种状况的指标。表 3、4 和 5 显示了从这些试验中取得的指标。

工夫耗费

从这张表格上,不难看出 XML 解决雷同数据的工夫耗费大概是 JSON 的30 倍

CPU 及内存利用率

​ 图 4 和图 5 别离是 JSON 和 XML 的 CPU 和内存利用率数据显示,从左到右顺次是 用户 CPU 利用率的均匀百分比 , 零碎 CPU 利用率的均匀百分比 内存利用率的均匀百分比

​ Figure3 显示了 JSON 每次试验的均匀 CPU 和内存利用率。图 4 展现了 XML 每次试验的均匀 CPU 和内存利用率。Figure5 通过在同一个图上绘制 Figure3 和 Figure4(不便比照),阐明了 JSON 的资源利用率和 XML 的资源利用率之间的差别。上图数据表明,XML 应用的用户 CPU 利用率整体上显著低于 JSON。JSON 和 XML 编码的传输在服务器上应用的 内存量简直雷同(图中外表 XML 内存利用率的浅蓝色折线被重叠遮住了)。

总结

​ 在下面的试验数据能够看到,JSON 的性能显著强于 XML。

​ XML 与 JSON 在 web 一直倒退且传输数据量日益增大的背景下,在要求算力的时代下,JSON 毫无疑问会是更加优良的一方。并且当初也又很多 JSON 的解析器,比方 Gson,FastJson,Jackson 等,这些解析器也在一直助力 JSON 的倒退。

参考文献:

Comparison of JSON and XML data interchange formats: A case study

The application/json Media Type for JavaScript Object Notation (JSON) – 百度学术 (baidu.com)

JSON 是如何诞生与倒退的?_CSDN 资讯 -CSDN 博客_json 起源

退出移动版