JSON 至 YAML

粘贴 JSON,即可得到整洁的 YAML,采用标准双空格缩进,仅在必要时为字符串加引号,多行值以块标量形式呈现,并可选按字母顺序排序键。适用于将 API 响应转换为 Kubernetes 清单、GitHub Actions 配置或任何以 YAML 为原生格式的工具。

如何将 JSON 转换为 YAML

  1. 1

    粘贴 JSON

    任何有效的 JSON 均可使用。转换器能精确保留其语义结构。

  2. 2

    选择缩进和样式

    可设置为2或4个空格;紧凑数组/对象采用流动式布局,长文本则采用块状布局。

  3. 3

    可选:排序键

    按字母顺序排序可使 YAML 在两个版本间更便于对比。

  4. 4

    复制 YAML

    粘贴至您的`.yaml`/`.yml`文件中。输出结果符合 YAML 1.2标准。

示例

输入:

{
  "name": "hyperion",
  "replicas": 3,
  "env": { "DEBUG": "false", "LOG_LEVEL": "info" },
  "command": ["php", "artisan", "queue:work"]
}

输出:

name: hyperion
replicas: 3
env:
  DEBUG: "false"
  LOG_LEVEL: info
command:
  - php
  - artisan
  - queue:work

类型映射

JSON YAML
字符串 根据需要使用无引号、带引号或块标量形式
整数 42
数字 3.14
布尔值 true / false
null null(或 ~,或为空值)
数组 包含 - 或流程 [...] 的块序列
对象 使用 key: value 进行块映射,或使用 {...} 流式处理

当字符串需要引号时

YAML 会自动将某些字符串识别为非字符串类型。此类值需用引号括起来:

为何需要加引号
yesnoonoff 被解释为布尔值(兼容 YAML 1.1)
nullNullNULL 被解释为 null
1.23 被解释为数字
2026-04-18 被解释为日期
前置/后置空格 将被移除
*&! 开头 YAML 指令

转换器会自动为这些内容添加引号,其余内容则保持不加引号以提高可读性。

YAML 与 JSON 的设计差异

  • 备注: YAML 提供该功能(#), JSON 则不提供。
  • 锚点/别名: YAML 支持交叉引用(&anchor/*alias); JSON 会重复显示这些数据。系统无法自动推断这些信息,如需使用请手动添加。
  • 多行字符串: YAML 支持块标量(|保留换行符,>则将其折叠)。转换器可利用这些特性处理长字符串。
  • 空值表示方式: YAML 支持null~或空值。转换器默认输出null

常见错误

  • YAML 1.1 的“挪威问题”:在 YAML 1.1 中,未加引号的 NO 会被当作布尔值 false。大多数现代解析器采用 YAML 1.2 标准,其中仅 true/false 为布尔值,但部分旧版工具仍会出现此问题。
  • 值中的尾随空格: YAML 在块标量中保留空格,而在普通标量中将其去除。若不确定空格的具体形式,此行为可能令人意外。
  • 制表位缩进。 YAML 禁止使用制表位缩进,必须始终使用空格。
  • 极长的单行字符串。 为提高可读性,将其拆分为块标量;当长度超过可配置阈值时,转换器会自动执行此操作。

常见问题

与其他 YAML 类型(布尔值、数字、日期、null)相似的字符串需用引号标注才能保持其字符串格式;包含特殊字符(如前导空格或不可打印字符)的字符串同样需要加引号。转换器会自动识别并处理这些情况。

默认设置为 YAML 1.2。若需支持 YAML 1.1兼容性(适用于旧版工具及部分持续集成系统),请启用“ YAML 1.1兼容性”选项,转换器将为在 YAML 1.1版本中属于布尔值的数值添加额外引号(yesnoonoff)。

是的。流式格式([1, 2, 3]{ a: 1 })适用于紧凑型数组和对象。大多数配置文件为提高可读性更倾向于使用块式格式。

是的,但需注意一点:K8s YAML 通常依赖 JSON 无法直接表达的注释和锚点。请先转换数据结构,再手动添加注释或锚点。

相关工具

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