JSON ↔ YAML 转换

在浏览器里把 JSON 转成 YAML、或把 YAML 转回 JSON,处理 Kubernetes、CI 配置、Docker Compose 时常用。

输入
输出

      
支持的 YAML 子集(够覆盖绝大多数配置文件) 标量(字符串 / 数字 / true / false / null / ~)、嵌套映射、- 列表、单双引号字符串、 # 注释(直接跳过)、| 与 > 块字符串、--- 文档起始、简单的 {} [] 流式写法。
明确不支持 锚点与别名(&x / *x)、合并键 <<、标签(!!str)、 复杂键 ?、%YAML 指令、多文档(--- 之后还有第二份)。多行字符串会统一输出成 "...\n...",不生成块标量。宁可报错,也不静默地把你的配置改坏。

什么时候用,怎么用

三个场景最常见:把接口返回的 JSON 改写成 Kubernetes / GitLab CI 的 YAML;把运维给的 YAML 转成 JSON 塞进程序或 jq;排查「YAML 缩进写错导致解析失败」时先转成 JSON 看结构对不对。

把文本贴进左边,输出自动刷新,不用点按钮。方向默认是自动:第一个非空字符是 {、[ 或 " 就按 JSON 解析,否则按 YAML。含 --- 开头、或 JSON 里带注释的输入,手动选方向更稳。YAML 输出用 2 空格缩进,序列统一缩进一层(不顶格),这样嵌套再深也不会看错层级。

常见坑

常见问题

YAML 转 JSON 后,原来的注释去哪了?
被丢弃了。JSON 语法里没有注释,任何解析器都留不住它。如果你需要保留说明,只能另存一份注释文档,或者用 YAML 里一个约定俗成的 _comment 字段。
JSON 里超过 2^53 的大整数转 YAML 会不会丢精度?
会。JavaScript 的数字是双精度浮点,超过 9007199254740991 的整数不再精确,例如 1234567890123456789 会变成 1234567890123456800。订单号、雪花 ID、身份证号这类值请当成字符串传,加引号包起来。
多行字符串在 YAML 里怎么输出?
统一输出成双引号字符串,换行写成 \n,例如 "第一行\n第二行"。这是所有 YAML 解析器都认的写法。本工具不生成 | 或 > 块标量,因为块标量的缩进规则很容易被手工编辑破坏。
支持 & 锚点、* 引用和 << 合并键吗?
不支持,输入里出现这些语法会直接报错并给出大概位置。这是刻意的:锚点展开需要一整套语义规则,实现不全就会静默丢字段,那比报错危险得多。请先在支持锚点的解析器里展开,再贴进来转。
YAML 里的 1.0 转换后为什么会变成 1?
因为 YAML 把它识别成了数字 1.0,转成 JSON 后是数值 1,再输出 YAML 时按最短形式写回 1。凡是「文本形态有意义」的值(版本号、编号、IP 段),都加引号写成字符串。

相关工具

JSON 格式化压缩、美化、校验,报错时指出具体行列 JSON ↔ CSV数组对象与表格互转,正确处理逗号引号换行 JSON 转代码一键生成 TypeScript interface 或 Go struct