JSON vs XML:为什么现代 API 几乎都选择 JSON?

2024-06-25

十多年前,SOAP 与 XML 是企业集成的默认选项;今天打开任意公开 API 文档,几乎都是 JSON。这不是偶然——而是开发效率、运行时成本与 Web 生态共同作用的结果。

语法与可读性

JSON 语法更简单:对象、数组、字符串、数字、布尔、null,没有标签闭合与命名空间的负担。

XML 适合文档型数据(混合文本与 markup、需要属性与顺序语义),但 API 载荷通常只需要结构化字段,JSON 更直接。

JSON 示例
{
  "id": 1001,
  "name": "Alice",
  "roles": ["admin", "editor"]
}
等价 XML 示例
<user>
  <id>1001</id>
  <name>Alice</name>
  <roles>
    <role>admin</role>
    <role>editor</role>
  </roles>
</user>

体积与传输效率

相同语义下,XML 标签开销通常使 payload 更大;JSON 更紧凑,移动端与弱网环境更友好。

压缩(gzip / brotli)后差距会缩小,但解析前的字节数仍影响带宽与缓存。

解析性能与开发体验

浏览器与 Node.js 内置 JSON.parse / JSON.stringify;前端无需额外库即可消费 API。

XML 需要 DOM 或 SAX 解析器,命名空间与 XPath 增加心智负担。多数现代语言对 JSON 的一行解析体验更好。

类型与 Schema

XML 有 XSD、DTD;JSON 有 JSON Schema。两者都能描述契约,但 OpenAPI(Swagger)生态默认示例与模型都是 JSON。

TypeScript、Go struct tag、Python pydantic 等工具链对 JSON 映射更自然。

XML 仍然合适的场景

遗留企业系统(SOAP、银行/政务接口)、需要混合内容与复杂文档模型(如 Office Open XML、SVG)。

强顺序与属性语义、行业 XSD 标准已存在时,继续用 XML 往往比强行迁移更稳妥。

新 Web / 移动 API 若无历史包袱,JSON 几乎是默认答案。

迁移与互操作建议

对外新接口优先 JSON;旧 XML 网关可加一层转换,或提供并存版本并标注弃用时间线。

无论哪种格式,联调时先用工具校验语法、格式化对比字段,再写客户端映射代码。