跳到正文

把 YAML 转换为 JSON

这个工具在你的浏览器中把 YAML 文件转换为 JSON,适合 Kubernetes 清单文件、Docker Compose 文件,或者需要把它当作 JSON 读取的脚本所在的 CI 流水线。类型遵循 YAML 1.2 核心模式:数字、true、false 和 null 会保留各自的类型,而 on、yes、no 以及像 2024-01-01 这样的日期会保持字符串,这与 GitHub Actions 和大多数现行工具的读取方式一致。锚点、别名和合并键(<<)都会被解析,每个别名都会以完整副本的形式写出,因为 JSON 没有引用机制;如果一个文件的别名展开后会新增超过一千万个字符,或者别名指向自身,任务就会被拒绝。包含多个以 --- 分隔的文档的文件,会按顺序为每个文档生成一个 JSON 文件,像结尾多出的 --- 之后那样的空文档会被跳过。注释不是数据,会被略去。你的文件绝不会被上传。

在你的浏览器中运行

把文件拖到这里

YAML,最大 50 MB

使用方法

  1. 1 选择一个 YAML 文件。
  2. 2 把缩进设在 0 到 8 个空格之间。默认是 2,0 表示压缩。
  3. 3 GRID16 在你的浏览器中解析文档并转换它。
  4. 4 下载 JSON。

常见问题

数字和布尔值会被转换吗?
会,遵循 YAML 1.2 核心模式:数字、true、false 和 null 会保留各自的类型。但 on、yes、no 以及像 2024-01-01 这样的日期会保持字符串,因为 GitHub Actions 和大多数现行工具都是这样读取它们的。
锚点、别名和合并键会怎样?
它们都会被解析,每个别名都会以完整副本的形式写出,因为 JSON 没有引用机制。如果一个文件的别名展开后会新增超过一千万个字符,或者某个别名指向自身,任务就会被拒绝。
一个文件里有多个文档时会怎样?
每个以 --- 分隔的文档都会变成自己的 JSON 文件,按顺序编号。像结尾多出的 --- 留下的那种空文档会被跳过。
像 !Ref 或 !reference 这样的自定义标签怎么处理?
任务会被拒绝。像 CloudFormation 的 !Ref 或 GitLab 的 !reference 这样的标签,其含义只有各自的工具才能解析。
遇到无效的 YAML,或者 .inf 和 .nan 会怎样?
重复的键、缩进错误或其他无效的 YAML 会停止任务,并给出解析器的报错信息,包括行号和列号。.inf、-.inf 和 .nan 同样会被拒绝,因为 JSON 无法保存它们。
我的文件会上传到服务器吗?
不会。转换在你的浏览器中进行,文件始终不会离开你的设备。