工具说明
关于 JSON 与 YAML 互转工具
这个转换器把 JSON 转成 YAML,也能把 YAML 转回 JSON,让同一份配置在 API 报文与 Kubernetes 清单、Docker Compose 文件、GitHub Actions 工作流或 OpenAPI 文档之间流转,不必重新敲一遍。
边输入边转换,键的顺序严格保持你写下的样子,缩进可选 2 或 4 个空格。出现语法错误时会指出具体的行号和列号。
JSON to YAML 怎么转
- 把 JSON 粘进输入面板,YAML 结果立刻出现,不用点任何按钮。
- 用方向按钮切到 YAML 转 JSON,比如把一份清单喂给只认 JSON 的脚本。
- 选 2 或 4 空格缩进以匹配你仓库的风格,Kubernetes 和 GitHub Actions 文件通常用 2。
- 输入不合法时,照着提示的行列号改那一处,输出会自己刷新。
什么时候用得上
- 把 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 这类版本号和镜像标签,被当成浮点数就会丢掉末尾的零。