YAML 如何对应到 JSON
按照 YAML 1.2 核心模式,YAML 映射转为 JSON 对象,序列转为数组,标量转为字符串、数字、布尔值或 null。少数 YAML 特性在 JSON 中没有对应物,转换方式如下:
| YAML 特性 | 在 JSON 中 |
|---|---|
注释(# …) | 被丢弃 |
锚点和别名(&base、*base) | 解析为值的副本 |
合并键(<<: *base) | 键被合并到当前映射中 |
以 --- 分隔的多个文档 | 一个数组,每个文档对应一项 |
块标量(|、>) | 按 YAML 规则处理换行后的字符串 |
非字符串键(1: a、true: b) | 字符串键("1"、"true") |
.inf、.nan | null,并给出警告 |
如何将 YAML 转为 JSON
- 粘贴 YAML,或打开
.yaml/.yml文件。语法错误会连同行号一起列出。 - 选择 JSON 缩进(2 个空格、4 个空格或制表符)以及是否对键排序。
- 点击“转为 JSON”。如需单行 JSON,请改用“压缩”。
示例:锚点与合并键
defaults: &defaults
retries: 3
timeout: 30
production:
<<: *defaults
timeout: 60
会转换为
{
"defaults": {"retries": 3, "timeout": 30},
"production": {"retries": 3, "timeout": 60}
}
(此处以紧凑形式展示)。显式写出的 timeout: 60 优先于合并进来的值。
精确的数字
整数按任意精度解析,因此像 12345678901234567890 这样的 ID 在 JSON 中会原样保留。许多转换器会经过 JavaScript 数字处理,从而把它变成 12345678901234567000。
反向转换请使用 JSON 转 YAML;如需先检查 YAML,请使用 YAML 校验器。