Skip to main content
UFOZoo

YAML转JSON 在线转换配置文件为JSON工具

Docker配置怎么转成JSON?把Docker、Kubernetes等配置文件转为标准JSON,支持锚点和别名解析,适合接口调试、工具链对接和数据转换处理。

更新于 2026-08-26

相关工具

功能特性

  • 双向转换:一键将 YAML 转换为 JSON 或将 JSON 转换为 YAML
  • 实时校验与精确定位:语法无效时高亮显示错误行号并提示具体错误信息
  • 支持复杂嵌套结构,包括对象、数组和多级层次
  • 处理 YAML 锚点(&)、别名(*)、合并键(<<: *)和自定义标签
  • 保留数据类型:数字保持数字、布尔值保持布尔值、空值保持空值
  • 默认显示行号,方便调试和对比差异时参考
  • 拖拽上传或点击浏览:支持 .yaml 和 .yml 文件
  • 一键下载转换结果为 .json 或 .yml 文件
  • 一键复制到剪贴板,方便分享
  • 首次加载后支持离线使用
  • 常见使用场景:Docker Compose、Kubernetes 清单、GitHub Actions 和 CI/CD 流水线

使用方法

  1. 1在左侧面板粘贴 YAML 或 JSON 数据。工具会自动检测格式并在输入时即时转换。
  2. 2校验失败时,输入面板的错误行号会变红,鼠标悬停可查看错误消息。
  3. 3将 .yaml 或 .yml 文件拖拽到输入区域即可加载,无需服务器上传。
  4. 4点击右侧工具栏的复制或下载按钮保存转换结果。
  5. 5工具自动检测输入格式,粘贴 YAML 得到 JSON 输出,粘贴 JSON 得到 YAML 输出。
  6. 6使用上传按钮从设备文件选择器打开 .yaml、.yml 或 .json 文件。
  7. 7检查转换后的输出,YAML 锚点(&)和别名(*)在 JSON 输出中已被解析展开。
  8. 8根据需要将转换结果下载为 .json 或 .yml 文件。
  9. 9使用复制按钮获取输出并粘贴到 IDE、CI/CD 配置或 Kubernetes 清单中。

常见问题

什么是 YAML?

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,常用于配置文件、Kubernetes 清单、CI/CD 流水线和 API 规范。它易于人类编写和阅读,机器解析起来也很轻松。与 JSON 不同,YAML 支持注释、多行字符串、锚点和别名,且大多数字符串不需要引号。

YAML 和 JSON 有什么区别?

YAML 更易读,语法简洁(不需要括号和逗号),支持注释(#)、锚点(&)、别名(*)和多行字符串。JSON 更严格,在 API 中广泛使用,解析速度更快,且所有编程语言都原生支持。两者可以表示相同的数据结构:这个工具可以顺畅地在它们之间转换。

如何将 JSON 转换为 YAML?

直接在左侧粘贴 JSON 内容,工具会自动识别格式并转换为 YAML。支持嵌套对象、数组、特殊字符等复杂结构。转换过程保留数据类型(字符串、数字、布尔值、null),输出整洁且缩进正确的 YAML,可直接用于 Docker Compose、Kubernetes 或任何配置文件。

这个工具支持 YAML 锚点和别名吗?

支持!工具使用 js-yaml 库,完整支持 YAML 1.2 特性,包括锚点(&)、别名(*)、合并键(<<: *)和自定义标签。这些引用会在转换为 JSON 前被解析,所以你会在输出中看到展开后的值。例如:&defaults 创建名为 'defaults' 的锚点,*defaults 在其他地方引用它。

用 yq 或命令行怎么把 YAML 转成 JSON?

yq(相当于 YAML 界的 jq)一行搞定:yq e -o=json file.yml。不想装 yq 的话,Ruby 一行脚本也可以:ruby -ryaml -rjson -e 'puts JSON.generate(YAML.load_file("file.yml"))',或用 Python(见下一条)。偶尔转一次,用本网页最省事,结果一样。

Python 里怎么把 YAML 转成 JSON?

装 PyYAML 后两步:yaml.safe_load(open('file.yml')) 解析,再 json.dumps(...) 序列化。两个预期行为:锚点和别名会展开为完整值,注释会被丢弃,与本工具的行为完全一致。

支持哪个 YAML 版本?

工具支持 YAML 1.2(最新标准)。大多数现代 YAML 文件都使用 YAML 1.2,包括 Kubernetes 清单、GitHub Actions 工作流(.github/workflows/*.yml)、Docker Compose 文件(docker-compose.yml)、GitLab CI(.gitlab-ci.yml)、Ansible playbook 和 OpenAPI/Swagger 规范。如果您有非常旧的 YAML 1.0 文件,基本结构应该仍然有效。

可以转换大型 YAML 文件吗?

可以,没有严格的文件大小限制,但非常大的文件(10MB+)可能会降低浏览器速度。对于典型用例(Docker Compose 文件、Kubernetes 部署、CI/CD 配置),它能即时处理。如果需要转换超大文件(100MB+),考虑使用命令行工具如 yq(YAML 的 jq)或 Python 的 PyYAML 库。

为什么我的 YAML 显示为无效?

常见问题:缩进不正确(YAML 使用空格而非 Tab,且缩进很重要)、键名后缺少冒号、未加引号的特殊字符(:、{}、[]、&、*、#)、尾随逗号(YAML 中不允许)、缩进级别不一致、混合使用空格和 Tab。校验器会显示失败的确切行和列,查看行号中的红色高亮。提示:一致地使用 2 空格缩进。

可以在移动设备上使用吗?

可以,但桌面端体验更好。在移动设备上,输入/输出面板会垂直堆叠,您仍然可以复制/下载结果。在平板电脑上编辑大型 YAML 文件时,使用横向模式效果最好。

为什么转成 JSON 后我的 YAML 注释不见了?

因为 JSON 没有注释语法,# 后面的内容在转换时会被丢弃,覆盖原文件前请先检查输出。锚点和别名则相反:它们会展开为完整值(&defaults 锚点变成重复的内联值),合并键也会被解析,因此 JSON 输出可能比 YAML 输入更长。

为什么 YAML 转 JSON 工具对编辑器里正常的 YAML 文件报错?

编辑器只是高亮 YAML,并不会严格校验;不少库对 YAML 1.1 的特殊语法很宽容(yes/no/on/off 变成布尔、允许 Tab),而本工具按 YAML 1.2 严格解析:Tab 永远不能用于缩进、重复键会被拒绝、未加引号的特殊值(如 1:30)是错误、流式集合必须括号配对。错误信息给出精确的行和列,修好那处,或把值加上引号('yes'、'1:30')强制变成字符串。

为什么 YAML 转 JSON 后 123 还是字符串而不是数字?

因为引号决定类型:YAML 里 123 是数字,'123' 或 "123" 是字符串,转换器原样保留这个区别,JSON 同时有这两种类型,所以不会强制转换。true 和 'true'、日期也一样。如果 JSON 输出需要数字,就去掉 YAML 里的引号;如果 API 要求字符串,就保留。YAML 1.1 的额外强转(yes → true)在这里不适用,因为本工具遵循 YAML 1.2。