XML 作为开放数据交换的唯一选择,经历了一段美好的时光。SOAP API 作为主要端点应用程序的存在也促进了它的流行.
后来,当 REST API 作为 SOAP 的一种不太复杂且功能相同的替代品出现时,人们也开始谈论除 XML 之外的其他数据交换媒介。这就是 JSON 开始获得动力的地方.
JSON 和 XML 在 Web 上都有详细记录的开放标准((RFC 7159, RFC 4825)),并且都是人类和机器可读的。任何一种都不是绝对优于另一种,因为每种都更适合不同的用例.
在这里,我不关注与语法相关的细微差异。相反,我在设计 Web API 及其功能时专注于主要决策点.
1. JSON相对于XML的优势
1.1. 不太冗长
JSON 比 XML 简洁得多,因为 XML 需要开始和结束标记,而 JSON 使用名称/值对,对象用“{”和“}”、数组用“[”和“]”、“,”来分隔对,和“:”分隔名称和值.
1.2. 尺寸更小
在信息量相同的情况下,JSON 几乎总是要小得多,这导致传输和处理速度更快。此外,我们还注意到 JSON 的序列化和反序列化速度比 XML 快得多.
1.3. 和javascript密切
也许 JSON 相对于 XML 的最显着优势是 JSON 是 JavaScript 的子集,因此解析和打包 JSON 的代码非常自然地适合 JavaScript 代码.
2. XML相对于JSON的优势
2.1. 元数据支持
XML 最显着的优点之一是我们可以将元数据以属性的形式放入标签中。JSON 就是缺乏这种能力。在 JSON 中,属性将作为可能不需要的数据表示中的其他成员字段添加.
2.2. 浏览器渲染
XML 的另一个优点是大多数浏览器以高度可读和有组织的方式呈现它。XML 的树结构非常适合这种格式,并允许浏览器让用户自然地折叠各个树元素。此功能在调试时特别有用.
2.3. 混合内容支持
XML 的一个很好的用例是能够在同一数据负载中传送混合内容。这种混合内容通过不同的标记来区分.
这在 JSON 中是不可能的.
3. XML 和 JSON 的用途
XML 是一种数据格式,也是一种语言。它具有许多强大的功能,使其不仅仅是一种用于数据交换的简单数据格式。例如,XPath、属性和名称空间、XML 模式和XSLT 等。所有这些特性都是XML 流行的主要原因.
JSON 并没有被设计为具有这样的功能,尽管其中一些现在正在尝试在 JSON 世界中找到自己的位置,例如, JSONPath.
简单地说,XML 的目的是文档标记。当文档标记和元数据是数据的重要组成部分并且不能被剥夺时,总是更喜欢使用 XML.
JSON 的目的是结构化数据交换。它通过直接表示对象、数组、数字、字符串和布尔值来实现此目的。当不需要元数据和文档标记时,请始终使用 JSON.