YAML 转 JSON 转换器

粘贴 YAML(包括 Kubernetes 清单、Compose 文件和 CI 流水线),即可得到合法的 JSON。锚点和合并键会被解析,多个文档会合并为一个数组,全程不上传任何数据。

输入
输出

    数据不会离开你的浏览器。快捷键:Ctrl/⌘ + Enter 执行主操作。

    YAML 如何对应到 JSON

    按照 YAML 1.2 核心模式,YAML 映射转为 JSON 对象,序列转为数组,标量转为字符串、数字、布尔值或 null。少数 YAML 特性在 JSON 中没有对应物,转换方式如下:

    YAML 特性在 JSON 中
    注释(# …)被丢弃
    锚点和别名(&base、*base)解析为值的副本
    合并键(<<: *base)键被合并到当前映射中
    以 --- 分隔的多个文档一个数组,每个文档对应一项
    块标量(|、>)按 YAML 规则处理换行后的字符串
    非字符串键(1: a、true: b)字符串键("1"、"true")
    .inf、.nannull,并给出警告

    如何将 YAML 转为 JSON

    1. 粘贴 YAML,或打开 .yaml / .yml 文件。语法错误会连同行号一起列出。
    2. 选择 JSON 缩进(2 个空格、4 个空格或制表符)以及是否对键排序。
    3. 点击“转为 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 校验器。

    YAML 转 JSON 常见问题

    YAML 转 JSON 时注释会怎样?

    注释会被丢弃,因为 JSON 没有注释语法。如果需要保留注释,请以 YAML 作为唯一数据源,在需要时再从中生成 JSON。

    锚点、别名和合并键如何处理?

    它们都会被解析。别名(*name)会被替换为锚点值的副本;合并键(<<: *defaults)会把锚点映射中的键复制到当前映射,显式写出的键优先。

    如果文件中有多个 YAML 文档怎么办?

    以 --- 分隔的文档会按顺序成为同一个 JSON 数组的各项。状态信息会提示合并了多少个文档。

    使用的是哪个 YAML 版本?

    使用当前规范 YAML 1.2 的核心模式。因此 yes 和 no 仍是字符串,0755 是十进制数 755。由于 YAML 1.1 工具对这类值的理解不同,校验器会给出警告;如果该 YAML 也会被 PyYAML 等工具读取,请给它们加上引号。

    YAML 能包含 JSON 无法表示的内容吗?

    能:注释、锚点、非字符串键、特殊浮点数(.inf、.nan)以及自定义标签。非字符串键会转为字符串,.inf 和 .nan 会转为 null 并给出警告,标签则在核心模式能识别时生效。