YAML 格式化工具

将 YAML 整理为统一的缩进宽度,或转换为 JSON。可检测制表符混入和缩进不一致等问题。

使用提示

  • 本工具采用自研的轻量级解析器,支持 key: value 键值对、嵌套、列表,以及内联的 [a, b, c]{a: 1} 写法。
  • 即使粘贴缩进不统一(例如 3 个或 5 个空格)的 YAML,只要能成功解析,就可以重新输出为统一的 2 或 4 个空格缩进。
  • 在“转换为 JSON”模式下,可以直接预览将 YAML 内容转换成 JSON 的结果,方便与 CI 配置或 API 响应进行比较。
  • 出现错误时会显示行号,请检查该行的缩进或冒号后面是否忘记加空格。
  • YAML 规范禁止使用制表符缩进。建议在编辑器设置中开启“将制表符转换为空格”,以避免这类问题。

常见问题

对于需要人工编辑和审阅的配置文件(如 CI 配置、Kubernetes 清单等),YAML 支持注释、可读性更高,更为合适;而对于程序之间交互的场景(如 API 响应),歧义更少、解析速度更快的 JSON 更为合适。

YAML 规范禁止使用制表符进行缩进。大多数解析器会将其视为语法错误并中止处理。建议将编辑器设置为自动把制表符转换为空格,以确保安全。

不支持。本工具面向 Docker Compose、GitHub Actions 等场景中常见的“常用子集”(映射、列表、内联流式集合以及基本标量类型),不支持锚点、别名、多文档、块状标量(|>)等高级功能。

这是一个著名的陷阱:如果不加引号直接写 noyesonoff,许多 YAML 实现会将其解释为布尔值,而不是普通字符串(例如挪威的国家代码)。如果希望将其作为字符串处理,需要用引号括起来,例如 "no"
ツールくん

闲话 ― YAML 为何成为配置文件的主流选择

YAML(YAML Ain't Markup Language)是一种诞生于 2001 年的数据序列化格式。由于不需要闭合标签、外观比 XML 更简洁,自 2010 年代以来被广泛用作基础设施配置文件的格式,例如 Docker Compose、GitHub Actions 和 Kubernetes 清单文件都采用了 YAML。

不过,YAML“用缩进表达结构”的设计虽然对人类来说易读,却也存在一个弱点:复制粘贴时缩进很容易被打乱。尤其是当制表符和空格混用时,许多解析器不会报错,而是悄悄地将其解释为错误的结构,这很容易成为配置失误的温床。

此外还有一个著名的陷阱,被称为“挪威问题”。如果不加引号直接写国家代码 no,许多 YAML 实现会将其解释为布尔值 false。YAML 1.1 与 1.2 版本对哪些字符串会被视为布尔值的规定也有所不同,这也是不同实现之间兼容性问题的常见成因。

→ 查看全部趣味知识