您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

XML 与 JSON 优劣对比

时间:2019-04-02 13:55:16  来源:  作者:
从这些趋势中可以推断,JSON 的发展将统一 Web 的信息交换格式,XML 的使用率将继续降低。我相信 JSON 很快就会在 Web 开发中超过 XML。至于其他领域,XML 比 JSON 更好的情况并不多。

-- Tom Strassner

简介

XML 和 JSON 是现今互联网中最常用的两种数据交换格式。XML 格式由 W3C 于 1996 年提出。JSON 格式由 Douglas Crockford 于 2002 年提出。虽然这两种格式的设计目标并不相同,但它们常常用于同一个任务,也就是数据交换中。XML 和 JSON 的文档都很完善( RFC 7159 、 RFC 4825 ),且都同时具有 人类可读性(human-readable)和 机器可读性(machine-readable)。这两种格式并没有哪一个比另一个更强,只是各自适用的领域不用。(LCTT 译注:W3C 是 互联网联盟 ,制定了各种 Web 相关的标准,如 htmlcss 等。Douglas Crockford 除了制定了 JSON 格式,还致力于改进 JAVAScript,开发了 JavaScript 相关工具 JSLint 和 JSMin )

XML 的优点

XML 与 JSON 相比有很多优点。二者间最大的不同在于 XML 可以通过在标签中添加属性这一简单的方法来存储 元数据(metadata)。而使用 JSON 时需要创建一个对象,把元数据当作对象的成员来存储。虽然二者都能达到存储元数据的目的,但在这一情况下 XML 往往是更好的选择,因为 JSON 的表达形式会让客户端程序开发人员误以为要将数据转换成一个对象。举个例子,如果你的 C++ 程序需要使用 JSON 格式发送一个附带元数据的整型数据,需要创建一个对象,用对象中的一个 名称/值对(name/value pAIr)来记录整型数据的值,再为每一个附带的属性添加一个名称/值对。接收到这个 JSON 的程序在读取后很可能把它当成一个对象,可事实并不是这样。虽然这是使用 JSON 传递元数据的一种变通方法,但他违背了 JSON 的核心理念:“ JSON 的结构与常规的程序语言中的结构相对应,而无需修改。(JSON’s structures look like conventional programming language structures. No restructuring is necessary.)” 1

虽然稍后我会说这也是 XML 的一个缺点,但 XML 中对命名冲突、 前缀(prefix)的处理机制赋予了它 JSON 所不具备的能力。程序员们可以通过前缀来把统一名称给予两个不同的实体。 2 当不同的实体在客户端中使用的名称相同时,这一特性会非常有用。

XML 的另一个优势在于大多数的浏览器可以把它以 具有高可读性和强组织性的方式(highly readable and organized way)展现给用户。XML 的树形结构让它易于结构化,浏览器也让用户可以自行展开或折叠树中的元素,这简直就是调试的福音。

XML 对比 JSON 有一个很重要的优势就是它可以记录 混合内容(mixed content)。例如在 XML 中处理包含结构化标记的字符串时,程序员们只要把带有标记的文本放在一个标签内就可以了。可因为 JSON 只包含数据,没有用于指明标签的简单方式,虽然可以使用处理元数据的解决方法,但这总有点滥用之嫌。

JSON 的优点

JSON 自身也有很多优点。其中最显而易见的一点就是 JSON 比 XML 简洁得多。因为 XML 中需要打开和关闭标签,而 JSON 使用名称/值对表示数据,使用简单的 { 和 } 来标记对象,[ 和 ] 来标记数组,, 来表示数据的分隔,: 表示名称和值的分隔。就算是使用 gzip 压缩,JSON 还是比 XML 要小,而且耗时更少。 3 正如 Sumaray 和 Makki 在实验中指出的那样,JSON 在很多方面都比 XML 更具优势,得出同样结果的还有 Nurseitov、Paulson、Reynolds 和 Izurieta。首先,由于 JSON 文件天生的简洁性,与包含相同信息的 XML 相比,JSON 总是更小,这意味着更快的传输和处理速度。第二,在不考虑大小的情况下,两组研究 45 表明使用 JSON 执行序列化和反序列化的速度显著优于使用 XML。第三,后续的研究指出 JSON 的处理在 CPU 资源的使用上也优于 XML。研究人员发现 JSON 在总体上使用的资源更少,其中更多的 CPU 资源消耗在用户空间,系统空间消耗的 CPU 资源较少。这一实验是在 RedHat 的设备上进行的,RedHat 表示更倾向于在用户空间使用 CPU 资源。 6 不出意外,Sumaray 和 Makki 在研究里还说明了在移动设备上 JSON 的性能也优于 XML。 7 这是有道理的,因为 JSON 消耗的资源更少,而移动设备的性能也更弱。

JSON 的另一个优点在于其对对象和数组的表述和 宿主语言(host language)中的数据结构相对应,例如 对象(object)、 记录(record)、 结构体(struct)、 字典(dictionary)、 哈希表(hash table)、 键值列表(keyed list)还有 数组(array)、 向量(vector)、 列表(list),以及对象组成的数组等等。 8 虽然 XML 里也能表达这些数据结构,也只需调用一个函数就能完成解析,而往往需要更多的代码才能正确的完成 XML 的序列化和反序列化处理。而且 XML 对于人类来说不如 JSON 那么直观,XML 标准缺乏对象、数组的标签的明确定义。当结构化的标记可以替代嵌套的标签时,JSON 的优势极为突出。JSON 中的花括号和中括号则明确表示了数据的结构,当然这一优势也包含前文中的问题,在表示元数据时 JSON 不如 XML 准确。

虽然 XML 支持 命名空间(namespace)与 前缀(prefix),但这不代表 JSON 没有处理命名冲突的能力。比起 XML 的前缀,它处理命名冲突的方式更简洁,在程序中的处理也更自然。在 JSON 里,每一个对象都在它自己的命名空间中,因此不同对象内的元素名称可以随意重复。在大多数编程语言中,不同的对象中的成员可以包含相同的名字,所以 JSON 根据对象进行名称区分的规则在处理时更加自然。

也许 JSON 比 XML 更优的部分是因为 JSON 是 JavaScript 的子集,所以在 JavaScript 代码中对它的解析或封装都非常的自然。虽然这看起来对 JavaScript 程序非常有用,而其他程序则不能直接从中获益,可实际上这一问题已经被很好的解决了。现在 JSON 的网站的列表上展示了 64 种不同语言的 175 个工具,它们都实现了处理 JSON 所需的功能。虽然我不能评价大多数工具的质量,但它们的存在明确了开发者社区拥抱 JSON 这一现象,而且它们切实简化了在不同平台使用 JSON 的难度。

二者的动机

简单地说,XML 的目标是标记文档。这和 JSON 的目标想去甚远,所以只要用得到 XML 的地方就尽管用。它使用树形的结构和包含语义的文本来表达混合内容以实现这一目标。在 XML 中可以表示数据的结构,但这并不是它的长处。

JSON 的目标是用于数据交换的一种结构化表示。它直接使用对象、数组、数字、字符串、布尔值这些元素来达成这一目标。这完全不同于文档标记语言。正如上面说的那样,JSON 没有原生支持 混合内容(mixed content)的记录。

软件

这些主流的开放 API 仅提供 XML: 亚马逊产品广告 API(Amazon Product Advertising API)。

这些主流 API 仅提供 JSON: 脸书图 API(Facebook Graph API)、 谷歌地图 API(google Maps API)、 推特 API(Twitter API)、AccuWeather API、Pinterest API、Reddit API、Foursquare API。

这些主流 API 同时提供 XML 和 JSON: 谷歌云存储(Google Cloud Storage)、 领英 API(Linkedin API)、Flickr API。

根据 可编程网络(Programmable Web) 9 的数据,最流行的 10 个 API 中只有一个是仅提供 XML 且不支持 JSON 的。其他的要么同时支持 XML 和 JSON,要么只支持 JSON。这表明了大多数应用开发者都更倾向于使用支持 JSON 的 API,原因大概是 JSON 更快的处理速度与良好口碑,加之与 XML 相比更加轻量。此外,大多数 API 只是传递数据而非文档,所以 JSON 更加合适。例如 Facebook 的重点在于用户的交流与帖子,谷歌地图则主要处理坐标和地图信息,AccuWeather 就只传递天气数据。总之,虽然不能说天气 API 在使用时究竟是 JSON 用的多还是 XML 用的多,但是趋势明确偏向了 JSON。 10 11

这些主流的桌面软件仍然只是用 XML:Microsoft wordApache Openoffice、LibraOffice。

因为这些软件需要考虑引用、格式、存储等等,所以比起 JSON,XML 优势更大。另外,这三款程序都支持混合内容,而 JSON 在这一点上做得并不如 XML 好。举例说明,当用户使用 Microsoft Word 编辑一篇论文时,用户需要使用不同的文字字形、文字大小、文字颜色、页边距、段落格式等,而 XML 结构化的组织形式与标签属性生来就是为了表达这些信息的。

这些主流的数据库支持 XML:IBM DB2、Microsoft SQL Server、Oracle Database、PostgresSQL、BaseX、eXistDB、MarkLogic、MySQL

这些是支持 JSON 的主流数据库:MongoDB、CouchDB、eXistDB、Elastisearch、BaseX、MarkLogic、OrientDB、Oracle Database、PostgreSQL、Riak。

在很长一段时间里,SQL 和关系型数据库统治着整个数据库市场。像 甲骨文(Oracle)和 微软(Microsoft)这样的软件巨头都提供这类数据库,然而近几年 NoSQL 数据库正逐步受到开发者的青睐。也许是正巧碰上了 JSON 的普及,大多数 NoSQL 数据库都支持 JSON,像 MongoDB、CouchDB 和 Riak 这样的数据库甚至使用 JSON 来存储数据。这些数据库有两个重要的特性是它们适用于现代网站:一是它们与关系型数据库相比 更容易扩展(more scalable);二是它们设计的目标就是 web 运行所需的核心组件。 12 由于 JSON 更加轻量,又是 JavaScript 的子集,所以很适合 NoSQL 数据库,并且让这两个品质更容易实现。此外,许多旧的关系型数据库增加了 JSON 支持,例如 Oracle Database 和 PostgreSQL。由于 XML 与 JSON 间的转换比较麻烦,所以大多数开发者会直接在他们的应用里使用 JSON,因此开发数据库的公司才有支持 JSON 的理由。(LCTT 译注:NoSQL 是对不同于传统的关系数据库的数据库管理系统的统称。 参考来源 ) 13

未来

对互联网的种种变革中,最让人期待的便是 物联网(Inte.NET of Things)(IoT)。这会给互联网带来大量计算机之外的设备,例如手表、温度计、电视、冰箱等等。这一势头的发展良好,预期在不久的将来迎来爆发式的增长。据估计,到 2020 年时会有 260 亿 到 2000 亿的物联网设备被接入互联网。 14 15 几乎所有的物联网设备都是小型设备,因此性能比笔记本或台式电脑要弱很多,而且大多数都是嵌入式系统。因此,当它们需要与互联网上的系统交换数据时,更轻量、更快速的 JSON 自然比 XML 更受青睐。 16 受益于 JSON 在 web 上的快速普及,与 XML 相比,这些新的物联网设备更有可能从使用 JSON 中受益。这是一个典型的梅特卡夫定律的例子,无论是 XML 还是 JSON,抑或是什么其他全新的格式,现存的设备和新的设备都会从支持最广泛使用的格式中受益。

Node.js 是一款服务器端的 JavaScript 框架,随着她的诞生与快速成长,与 MongoDB 等 NoSQL 数据库一起,让全栈使用 JavaScript 开发成为可能。这些都预示着 JSON 光明的未来,这些软件的出现让 JSON 运用在全栈开发的每一个环节成为可能,这将使应用更加轻量,响应更快。这也是任何应用的追求之一,所以,全栈使用 JavaScript 的趋势在不久的未来都不会消退。 17

此外,另一个应用开发的趋势是从 SOAP 转向 REST。 18 19 20 XML 和 JSON 都可以用于 REST,可 SOAP 只能使用 XML。

从这些趋势中可以推断,JSON 的发展将统一 Web 的信息交换格式,XML 的使用率将继续降低。虽然不应该把 JSON 吹过头了,因为 XML 在 Web 中的使用依旧很广,而且它还是 SOAP 的唯一选择,可考虑到 SOAP 到 REST 的迁移,NoSQL 数据库和全栈 JavaScript 的兴起,JSON 卓越的性能,我相信 JSON 很快就会在 Web 开发中超过 XML。至于其他领域,XML 比 JSON 更好的情况并不多。

角注

Introducing JSON ↩
XML Tutorial ↩
JSON vs. XML: Some hard numbers about verbosity ↩
Comparison of JSON and XML Data Interchange Formats: A Case Study ↩
A comparison of data serialization formats for optimal efficiency on a mobile platform ↩
Comparison of JSON and XML Data Interchange Formats: A Case Study ↩
A comparison of data serialization formats for optimal efficiency on a mobile platform ↩
Introducing JSON ↩
Most Popular APIs: At Least One Will Surprise You ↩
Why JSON will continue to push XML out of the picture ↩
Thousands of APIs Paint a Bright Future for the Web ↩
Why JSON will continue to push XML out of the picture ↩
How JSON sparked NoSQL – and will return to the RDBMS fold ↩
A Simple Explanation Of ‘The Internet Of Things’ ↩
Proofpoint Uncovers Internet of Things (IoT) Cyberattack ↩
Why JSON will continue to push XML out of the picture ↩
Why JSON will continue to push XML out of the picture ↩
Thousands of APIs Paint a Bright Future for the Web ↩
3,000 Web APIs: Trends From A Quickly Growing Directory ↩
How REST replaced SOAP on the Web: What it means to you ↩
via: https://www.cs.tufts.edu/comp/150IDS/final_papers/tstras01.1/FinalReport/FinalReport.html

作者: TOM STRASSNER 选题: lujun9972 译者: wwhio 校对: wxy

本文由 LCTT 原创编译, linux中国 荣誉推出
 


Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Create 2024百度AI开发者大会:李彦宏带来三大AI开发工具,让人人都是开发者
“未来,自然语言将成为新的通用编程语言,你只要会说话,就可以成为一名开发者,用自己的创造力改变世界。”4月16日,Create 2024百度AI开发者大会在深圳举办。百度创始人、董事长兼...【详细内容】
2024-04-17  Search: XML JSON  点击:(2)  评论:(0)  加入收藏
“刘强东”当主播,扶得起京东直播吗?
定焦(dingjiaoone)原创作者 | 苏琦编辑 | 金玙璠“东哥呢,在哪里?”4月16日下午6点18分,刘强东的数字人形象“采销东哥”开启“直播首秀”,同时亮相京东家电家居、京东超市采销直...【详细内容】
2024-04-17  Search: XML JSON  点击:(2)  评论:(0)  加入收藏
AI圈公开的秘密:天下模型一大抄
抄袭已经成为AI世界公开的秘密。据The Information周一的文章,许多初创公司的AI聊天机器人很可能是采用了OpenAI和其他公司的数据开发的。这些机器人在某些任务上可以媲美GPT...【详细内容】
2024-04-17  Search: XML JSON  点击:(4)  评论:(0)  加入收藏
聚焦“一房二卖”等问题 最高检发布典型案例
记者4月16日从最高人民检察院获悉,最高检近日印发了6件涉房地产纠纷民事检察监督典型案例,聚焦“一房二卖”、逾期办理产权证、违约金调整等高发监督事项。“一房二卖”等违法...【详细内容】
2024-04-17  Search: XML JSON  点击:(2)  评论:(0)  加入收藏
今年买二手房最划算?70城二手房价格全都降了!
国家统计局4月16日公布的数据显示,2024年一季度,全国房地产开发投资同比下降9.5%。从销售来看,一季度,销售面积同比下降19.4%;新建商品房销售额下降27.6%。国家统计局城市司首席...【详细内容】
2024-04-17  Search: XML JSON  点击:(1)  评论:(0)  加入收藏
周鸿祎力挺手机支架 喊话余承东:手机在老婆手里 你能专心开车吗
快科技4月17日消息,360周鸿祎近日再次提及了雷军和余承东引发的关于手机支架的讨论,强调了手机支架与驾驶安全之间的关联。周鸿祎认为,余承东在智界S7发布会上对手机支架的讽刺...【详细内容】
2024-04-17  Search: XML JSON  点击:(1)  评论:(0)  加入收藏
Android 15 有望引入应用隔离功能,进一步提升系统安全性
IT之家 4 月 17 日消息,即将推出的 Android 15 系统可能引入一项全新功能:应用隔离。这一功能将更好地保护用户免受行为异常应用的侵害。Android 系统一直拥有强大的安全防护...【详细内容】
2024-04-17  Search: XML JSON  点击:(4)  评论:(0)  加入收藏
全球首个AI程序员Devin造假?业内人士:质疑有理,但程序员已离不开AI
·号称全球首个AI人工智能软件师Devin日前被网络博主质疑造假、炒作。业内人士分析认为,该位博主质疑有理有据,Devin的“惊人效果”确实存在一些商业炒作的嫌疑。号称“...【详细内容】
2024-04-17  Search: XML JSON  点击:(2)  评论:(0)  加入收藏
“刘强东”直播首秀,释放了什么信号?
文|新浪科技 原祎鸣“3!2!1!上链接!”昨晚,刘强东AI数字人(以下简称“刘强东”)完成了首秀。虽然此前已有不少明星、头部主播的“分身”活跃在直播间中,技术制造的“替代者”已不算...【详细内容】
2024-04-17  Search: XML JSON  点击:(2)  评论:(0)  加入收藏
A股突发!美联储传来大消息
全球市场动荡的根源其实还在于美元!最近,全球股债基本处于双杀状态,昨天A股亦是惨烈。在这种市场情绪背后,有人错误将之归咎于资本市场新规,其实根源在于美元,因为全球主要资产几...【详细内容】
2024-04-17  Search: XML JSON  点击:(2)  评论:(0)  加入收藏
▌简易百科推荐
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  老毛桃    Tags:WiFi密码   点击:(9)  评论:(0)  加入收藏
手机WiFi信号满格却接收消息延迟?这里有妙招帮你解决!
在现代社会,手机已经成为了我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,有时我们会遇到一些令人烦恼的问题,比如明明手机WiFi信号满格...【详细内容】
2024-04-03  蔡前进    Tags:手机WiFi   点击:(8)  评论:(0)  加入收藏
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01    安全牛  Tags:SASE   点击:(13)  评论:(0)  加入收藏
提示“该网站安全证书存在问题,连接可能不安全”如何解决
在你输入网址并浏览网页时,如果你的浏览器弹出一个警告,提示“网站的安全证书存在问题”,或是显示一个红色的锁标志,这些都是网站不安全的警示。这些提示通常是由HTTPS协议中的S...【详细内容】
2024-03-18  倏然间    Tags:网站安全证书   点击:(10)  评论:(0)  加入收藏
如何有效排除CAN总线错误
控制器局域网(CAN)控制器局域网(CAN)是现代车辆中电子元件无缝运行的基础。在远程信息处理领域,CAN总线系统的效率至关重要,其能够实现支撑当今汽车技术的复杂功能。然而,CAN总...【详细内容】
2024-02-20    千家网  Tags:CAN   点击:(52)  评论:(0)  加入收藏
网络连接受限或无连接怎么办?这里提供几个修复办法
可能错误提示 连接受限或无连接:连接具有有限的连接或无连接。你可能无法访问Internet或某些网络资源。 连接受限。排除和解决“连接受限或无连接”错误此错误可能由计算机上...【详细内容】
2024-02-06  驾驭信息纵横科技    Tags:网络连接受限   点击:(50)  评论:(0)  加入收藏
如何将Mac连接到以太网?这里有详细步骤
在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。如何将Mac连接到以太网如果你的Mac有以太网端口,则需要以...【详细内容】
2024-02-03  驾驭信息纵横科技    Tags:Mac   点击:(67)  评论:(0)  加入收藏
简易百科之什么是端口映射
端口映射,也称为端口转发,是一种网络通信中的技术手段,通过将内网中的一个端口上的数据流量转发到另一个端口,使得外部网络能够访问到内部网络中的特定服务。在实现上,端口映射通...【详细内容】
2024-01-26    简易百科  Tags:端口映射   点击:(163)  评论:(0)  加入收藏
ip因频繁登陆已被禁止访问 无法显示图片 怎么办
首先,我们要明白,部分网站为了有效遏制数据爬取和非法攻击,保证访问速度和普通用户查询,会在系统中增加网络安全设备,加强安全防护机制,并提前设置安全访问规则。因此,一旦用户的行...【详细内容】
2024-01-20  何福意思    Tags:ip   点击:(68)  评论:(0)  加入收藏
电脑连上wifi却上不了网怎么办
当电脑连接上 WiFi 却无法上网时,可能会让人感到困惑和沮丧。这个问题通常会有多种可能的原因,包括网络配置问题、路由器故障、无线适配器问题等。在面对这个问题时,可以尝试以...【详细内容】
2024-01-16  编程资料站    Tags:wifi   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条