JSON ↔ YAML Converter

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
JSON Input
YAML Output
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand JSON ↔ YAML Converter

这个转换器在 JSON 和 YAML 之间搬运同一份数据,绝大多数配置文件都用这两种格式书写。

How it works

两种格式描述的是同样的三件事——映射、序列和标量——因此转换是重新打印,而不是翻译。转成 YAML 时,结构由缩进而非花括号表达,任何可能被重新读成数字、布尔值或 null 的字符串都会加引号以保住字符串类型。转成 JSON 时,缩进重新变回花括号和方括号,注释被丢弃,因为 JSON 没有地方安放它们。

When to use it

  • 把 API 响应改写成测试或配置文件用的 YAML 夹具。
  • 把 Docker Compose 或 Kubernetes 片段转成 JSON,让脚本用普通 JSON 解析器读取。
  • 把手写的 YAML 改写成 JSON,定位解析器与你意见不合的确切位置。
  • 在读取不同格式的两个工具之间搬运设置。

Watch out for

  • 注释无法在往返中存活。在真实的配置文件里,注释承载了大部分说明,而 JSON 无从表示它们。
  • 在 YAML 1.1 解析器中——默认配置的 PyYAML,以及大量老旧工具链——不带引号的 yes、no、on、off 是布尔值,因此国家代码 NO 会变成 false。本转换器遵循 YAML 1.2,把它们保留为字符串,这意味着一个值在这里看着正确,到了管线下游却可能翻转。无论如何都给它们加引号。
  • 转换器处理的是大多数配置文件具备的形态:顶层键、嵌套映射和简单列表。锚点与别名(&base、*base)、块标量(| 和 >)以及用 --- 分隔的多文档文件不会被带过来。

Not the right tool for: 对 Helm chart 或任何模板化 YAML 做往返转换。转成 JSON 再转回来会丢掉让它成为模板的锚点和模板语法。

Frequently Asked Questions

如何把 YAML 转换成 JSON?

把 YAML 粘进输入框,选择 YAML → JSON,然后点击转换。工具会解析 YAML(包括锚点和多行字符串)并输出格式化的 JSON。采用 YAML 1.2,因此 yes/no/on/off 是字符串而不是布尔值——与 JSON 语义一致。

如何把 JSON 转换成 YAML?

把 JSON 粘进输入框,选择 JSON → YAML,然后点击转换。所有 JSON 类型都会映射到对应的 YAML:字符串、数字、布尔值、null、对象(YAML 映射)和数组(YAML 序列)。注释不会被带过来,因为 JSON 里没有注释。

从 JSON 转成 YAML 时常见的解析陷阱有哪些?

像 NO 和 ON 这样的国家代码在 YAML 1.1 中会被解析成布尔值。像 1.2 这样的版本号会被解析成浮点数。像 0755 这样形似八进制的数字会按八进制解析。给这些值加上引号才能保住字符串类型。

How to Use JSON ↔ YAML Converter

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.