什么是 YAML?
YAML 是用缩进代替大括号的配置文件格式,Docker Compose、Kubernetes、GitHub Actions 与 Spring Boot 的 application.yml 都使用它。YAML 1.2 是 JSON 的超集,两者可以完整互转,区别主要在可读性。
使用方法
- 选择方向:JSON → YAML 或 YAML → JSON。
- 粘贴内容。开启自动转换时,输入即实时转换;语法错误会标出准确的行与列。
- 选择 2 或 4 个空格的缩进,再复制或下载结果。点击“结果放回输入”可以反向转换回去。
示例
这段 JSON:
{"name":"web","replicas":3,"ports":[80,443],"env":{"DEBUG":"yes","VERSION":"1.10"}}
会转成:
name: web replicas: 3 ports: - 80 - 443 env: DEBUG: "yes" VERSION: "1.10"
注意 "yes" 与 "1.10" 加了引号。不加的话,很多 YAML 工具会把 yes 读成布尔值 true、把 1.10 读成数字 1.1,配置就在不知不觉中被改掉了。
常见问题
为什么有些值加了引号?
YAML 可能误判的字符串一律加引号:yes、no、on、null 这类词,看起来像数字或日期的文本,以及含有 : 或 # 的文本。有名的例子是挪威的国家代码 NO,旧版 YAML 解析器会把它变成 false。
大数字会保持精确吗?
会,双向都会。9007199254740993 或 1280.50 这样的值会按原文写出。很多在线转换工具会让数字经过 JavaScript,把很大的 ID 四舍五入成 9007199254740992。
注释、锚点和多文档会怎么处理?
JSON 没有注释,所以 YAML 的注释会被去掉。锚点与别名(&base、*base)以及合并 key(<<: *base)会展开成实际的值。以 --- 分隔的多份文档会转成 JSON 数组。
日期会怎么处理?
2024-01-01 这类日期在 JSON 中保持原来的文本,不会换成其他格式或时区。