JSON vs XML:为什么现代 API 几乎都选择 JSON?
2024-06-25
十多年前,SOAP 与 XML 是企业集成的默认选项;今天打开任意公开 API 文档,几乎都是 JSON。这不是偶然——而是开发效率、运行时成本与 Web 生态共同作用的结果。
语法与可读性
JSON 语法更简单:对象、数组、字符串、数字、布尔、null,没有标签闭合与命名空间的负担。
XML 适合文档型数据(混合文本与 markup、需要属性与顺序语义),但 API 载荷通常只需要结构化字段,JSON 更直接。
{
"id": 1001,
"name": "Alice",
"roles": ["admin", "editor"]
}<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 网关可加一层转换,或提供并存版本并标注弃用时间线。
无论哪种格式,联调时先用工具校验语法、格式化对比字段,再写客户端映射代码。