SS 工具箱
SS 工具箱
所有数据均在本地处理

YAML 转 JSON / JSON 转 YAML — 不保留注释的配置转换器

在浏览器里把 Kubernetes、docker-compose、GitHub Actions 等 YAML 配置转成 JSON,也能反向转回去。这是重新序列化,不是无损往返:注释、锚点和多文档结构都会丢失,未加引号的值按 YAML 类型规则解析。

这个转换器做什么,以及会丢掉什么

  1. 两个方向,各一个按钮

    YAML → JSON 与 JSON → YAML 是两个独立操作,结果直接覆盖另一侧编辑区,不会与已有内容合并。

  2. 注释一定会丢

    解析时 YAML 注释被丢弃,生成的 YAML 也不会写注释;JSON 本身就没有注释语法。

  3. 锚点会展开,多文档会报错

    &anchor / *alias 会被解析成重复的对象;一个文件里出现多个 --- 文档会直接报错,而不是合并输出。

  4. 按 YAML 1.2 的类型规则解释

    未加引号的 1.0 会变成 1,2024-01-01 会变成 ISO 时间字符串,.inf 和 .nan 会变成 null;要保留字符串请加引号。

  5. 本地运行,可读文件、可下载

    文件在浏览器里读取,不会上传。没有硬性大小限制,但超大文件转换时会卡住页面。

YAML ↔ JSON 转换常见问题

这个转换是双向的吗?

是,两个按钮分别对应两个方向。但每次转换都是重新序列化:注释、排版和锚点都不会保留;生成的 YAML 固定 2 空格缩进、80 列折叠,没有缩进或排序选项。

注释能保留吗?

不能。解析时 YAML 注释被丢弃,生成的 YAML 也不会补注释,JSON 本身没有注释语法。请把带注释的文件当作唯一来源,输出只当派生数据。

支持锚点、别名和多文档吗?

锚点和别名会被解析并展开成重复的值。多文档(多个 ---)会报 expected a single document in the stream,需要先拆分;Kubernetes 一个文件里放多个资源的清单就属于这种情况。

为什么 version: 1.0 变成了 1,yes 反而还是字符串?

未加引号的标量按 YAML 规则推断类型:1.0 是数字,输出就是 1。js-yaml 遵循 YAML 1.2,yes/no/on/off 都是普通字符串,所以 GitHub Actions 的 on: 键不会被转成布尔值。必须保留字符串时请加引号。

日期、大整数和 null 怎么处理?

未加引号的 2024-01-01 会被解析成时间,JSON 里变成 2024-01-01T00:00:00.000Z。超过 2^53 的整数会丢精度,.inf/.nan 变成 null,~、null 和空值都变成 null。

能处理 Kubernetes、docker-compose、GitHub Actions 文件吗?

标准单文档 YAML 都能处理,包括这些格式。多文档的 Kubernetes 导出要先拆开;另外注释会丢,不要把转换结果直接当作要提交的配置文件。

有大小限制吗?文件会上传吗?

全部在浏览器里完成,不上传文件。没有配置上限,但转换在主线程同步执行,几 MB 的文件可能让页面卡住。

相关工具
赞助MindElixir