JSON 与 YAML 互转工具

在 JSON 与 YAML 之间互转,保持键的顺序

JSON 与 YAML 双向转换,保持键的顺序自动识别
JSON 输入
YAML 输出

工具说明

关于 JSON 与 YAML 互转工具

这个转换器把 JSON 转成 YAML,也能把 YAML 转回 JSON,让同一份配置在 API 报文与 Kubernetes 清单、Docker Compose 文件、GitHub Actions 工作流或 OpenAPI 文档之间流转,不必重新敲一遍。

边输入边转换,键的顺序严格保持你写下的样子,缩进可选 2 或 4 个空格。出现语法错误时会指出具体的行号和列号。

JSON to YAML 怎么转

  1. 把 JSON 粘进输入面板,YAML 结果立刻出现,不用点任何按钮。
  2. 用方向按钮切到 YAML 转 JSON,比如把一份清单喂给只认 JSON 的脚本。
  3. 选 2 或 4 空格缩进以匹配你仓库的风格,Kubernetes 和 GitHub Actions 文件通常用 2。
  4. 输入不合法时,照着提示的行列号改那一处,输出会自己刷新。

什么时候用得上

  • 把 kubectl 导出的 JSON 资源转成可读、可提交的 YAML 清单。
  • 调试生成式配置时,转换某个 Docker Compose 服务块。
  • 在 JSON 和 YAML 两种形态之间搬运 OpenAPI 规范,因为两边的工具链各有偏好。
  • 把以 JSON 形式产出的 GitHub Actions 工作流片段改写成 runner 需要的 YAML。

会把转换搞砸的 YAML 规则

YAML 1.2 基本上是 JSON 的超集,所以合法的 JSON 一般也是合法的 YAML。问题出在反方向:YAML 会去猜类型,而 JSON 从不这么干。

  • 挪威问题:NO、no、yes、on、off 会被 YAML 1.1 解析器当成布尔值,于是国家代码 NO 变成了 false。这类值要加引号。
  • 前导零:010 这样的值可能被当成八进制数字而不是字符串。标识符、邮编、料号都要加引号。
  • 版本号:不加引号的 1.10 会变成浮点数 1.1,末尾的零就没了。
  • 缩进必须用空格、绝不能用 tab,而且每个引出值的冒号后面都要有一个空格。

JSON 转 YAML常见问题

转换会打乱我的键顺序吗?
不会。键按你给的顺序原样输出,这样版本控制里的差异也能保持小。
注释会怎么样?
JSON 没有注释语法,所以 JSON 转 YAML 无中生不出注释,而 YAML 转 JSON 会丢掉源文件里的注释。注释重要的话请保留原文件。
输出里会有锚点和别名吗?
不会。重复结构会完整展开写出,任何解析器不支持别名也能读。
我的配置会被上传吗?
不会。解析和转换都在浏览器里用 js-yaml 完成,你粘贴的内容不会离开你的机器,wetool.site 也不会存储。
为什么某个 YAML 值转换后类型变了?
YAML 会对不加引号的标量猜类型。在 YAML 源里给这个值加上引号,它就会转成 JSON 字符串。

JSON 与 YAML 的对比

JSON 严格、无歧义,很适合做传输格式,但没有注释,嵌套一深就很吵。YAML 在评审时更好读,代价是类型猜测和对缩进敏感。多数团队把配置放在 YAML 里,在系统边界上交换 JSON,双向转换正是为这个场景准备的。

提交前的加引号清单

因转换而部署失败,多半源于某个值丢了类型。按下面几类扫一遍 YAML 输出。

  • 国家和语言代码,尤其是 NO,以及任何看起来像单词的两字母值。
  • 实为标识符的数字:账号、补零的端口号,以及任何带前导零的值。
  • 1.10 或 3.20 这类版本号和镜像标签,被当成浮点数就会丢掉末尾的零。