JSON vs YAML vs XML:不同数据格式怎么选
JSON、YAML 和 XML 都能表达结构化数据,但它们解决的问题并不完全相同。选择格式时,应优先考虑消费方、可读性、验证方式和生态工具。
JSON:Web API 的默认选择
JSON 语法紧凑,几乎所有语言都有标准库支持,浏览器原生提供 JSON.parse() 和 JSON.stringify()。公开 HTTP API、前端配置、日志片段和文档数据库中,JSON 通常是默认选择。
YAML:更适合人工编辑的配置
YAML 支持注释、多行字符串和更简洁的列表写法,常见于 Kubernetes、Docker Compose、GitHub Actions 等配置文件。但 YAML 对缩进敏感,隐式类型规则也可能带来意外,因此不适合作为公共 API 的响应格式。
XML:文档型和企业系统仍常见
XML 支持属性、命名空间、Schema、XPath 和 XSLT,适合文档型数据、传统企业系统和需要强验证的场景。代价是语法冗长、解析复杂度更高。
同一份数据的三种写法
// JSON
{"user":{"name":"Li","roles":["admin","editor"]}}
# YAML
user:
name: Li
roles:
- admin
- editor
<!-- XML -->
<user><name>Li</name><roles><role>admin</role><role>editor</role></roles></user>
实用建议
- 公开 Web API:优先 JSON。
- 人手维护的部署配置:优先 YAML 或 TOML。
- 文档交换、命名空间、强 Schema 需求:考虑 XML。
- 高频内部通信且追求体积和速度:考虑 Protocol Buffers,而不是这三者。