YAML 转 JSON

YAML 手写起来更舒服,JSON 用程序消费起来更舒服,而很多现代工具(CI 流水线、Kubernetes、Ansible)两者都接受。当你需要把配置粘进一个只认 JSON 的工具时,API Gateway 定义、CloudFormation 模板、某些 webhook 请求体,这个转换工具就能完成这一往返。锚点、合并以及 YAML 特有的类型(日期、八进制、null、~)都会被规整为 JSON 的对应形式。

如何把 YAML 转成 JSON

  1. 1

    粘贴 YAML

    任意有效的 YAML 1.1 或 1.2 文档。

  2. 2

    解析锚点

    锚点(`&x`)和别名(`*x`)会被内联展开。合并键(`<<`)会被扁平化。

  3. 3

    规整类型

    日期、null 值、布尔值都会被转换为 JSON 的对应形式。

  4. 4

    输出 JSON

    美化或压缩,随你选择。

转换示例

YAML:

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  host: prod.example.com
  debug: false

staging:
  <<: *defaults
  host: staging.example.com
  debug: true

JSON(锚点已解析):

{
  "defaults": {
    "timeout": 30,
    "retries": 3
  },
  "production": {
    "timeout": 30,
    "retries": 3,
    "host": "prod.example.com",
    "debug": false
  },
  "staging": {
    "timeout": 30,
    "retries": 3,
    "host": "staging.example.com",
    "debug": true
  }
}

类型映射

YAML JSON
字符串 字符串
整数 数字
浮点数 数字
布尔值(true、false) 布尔值
空值(null、~、空白) null
时间戳 ISO 8601 字符串
序列(列表) 数组
映射 对象

JSON 无法表示的 YAML 特有内容

  • 注释。 JSON 没有标准的注释语法。注释会被丢弃。
  • 多文档流(--- 分隔符)。JSON 一个文件一份文档;当有多份时,转换工具会输出一个文档数组。
  • 锚点和别名。 被解析并内联复制。
  • 复杂键(非字符串的映射键)。JSON 的键必须是字符串;复杂键会被字符串化。

1.1 与 1.2 的陷阱

  • YAML 1.1 会把 yes、no、on、off、y、n 解析为布尔值。作为国家代码的 NO 会悄悄变成 false。
  • YAML 1.2 把布尔值限制为 true 和 false。更安全,但许多解析器(包括 PyYAML 的默认行为)仍用 1.1。

转换工具默认采用 1.2 语义,并在 1.1 会改变结果时发出警告。

从 JSON 往返回 YAML

JSON 转 YAML 通常是无损的(JSON 是 YAML 1.2 语法的子集)。YAML 转 JSON 是有损的:注释和合并键结构会消失。如果你打算往返,就在版本控制中保留原始的 YAML。

常见问题

不会,那些有自己的模板机制,在 YAML 解析之前运行。先渲染模板(用 kustomize build 或 helm template),再把输出喂到这里。

YAML 时间戳在 JSON 中变成 ISO 8601 字符串。2026-04-18 变成 "2026-04-18"。时间和时区会被保留。

浏览器中的实际上限约为 10 MB。对于更大的文件,在命令行使用 yq 或 python -c "import yaml, json; print(json.dumps(yaml.safe_load(open(file))))"。

不会。转换在你的浏览器中运行,不会传输任何内容。

相关工具

此工具还提供其他语言版本