YAML ↔ JSON 转换器

在线 YAML 和 JSON 双向转换工具。支持 Docker Compose、Kubernetes、GitHub Actions 等 DevOps 配置文件的实时转换,提供语法高亮和验证功能。

最后更新: 2026/01/28

YAML ↔ JSON 转换器

缩进
已自动保存
YAML 输入
1
等待输入…
JSON 输出
1
转换结果将显示在这里
输入长度: 0
输出长度: 0
行数: 0

所有转换均在浏览器中处理,不会将任何数据发送到服务器。 可安全转换 Docker Compose、Kubernetes 清单、CI/CD 配置等 DevOps 文件。

什么是 YAML ↔ JSON 转换器?

YAML ↔ JSON 转换器是一款在线工具,可实时在 YAML 和 JSON 格式之间进行转换。它让您能够轻松转换 Docker、Kubernetes、GitHub Actions 等 DevOps 环境中广泛使用的配置文件格式。

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,其特点是基于缩进的简洁语法。JSON(JavaScript Object Notation)是一种轻量级格式,广泛用于编程语言之间的数据交换。两种格式是兼容的,您可以根据情况转换为适当的格式。

使用场景

  • Docker Compose 配置 – 将 docker-compose.yml 文件转换为 JSON 以进行程序化处理,或将 JSON 配置转换为 YAML 以提高可读性
  • Kubernetes 清单 – 将 kubectl JSON 输出转换为 YAML,或将 YAML 清单用作 JSON API 请求体
  • GitHub Actions 工作流 – 以 JSON 分析 .github/workflows/*.yml 文件,或将 JSON 模板转换为 YAML 工作流
  • CI/CD 管道 – 将 Jenkins、GitLab CI、CircleCI 的 YAML 配置转换为 JSON 以进行脚本处理
  • API 开发 – 在 YAML 和 JSON 之间转换 OpenAPI/Swagger 规范
  • 配置迁移 – 将基于 JSON 的配置迁移到 YAML,反之亦然
  • 数据验证 – 实时检查和调试 YAML 或 JSON 语法错误
  • 学习和理解 – 将 YAML 结构转换为 JSON 以清楚地理解数据层次结构

主要功能

  • 双向转换 – 支持从 YAML 到 JSON 和从 JSON 到 YAML 的转换。使用顶部的切换按钮可轻松切换转换方向。
  • 实时验证 – 在您输入时检测并显示语法错误。有效输入显示为绿色,错误显示为红色。
  • DevOps 示例 – 提供 5 个实用示例,包括 Docker Compose、Kubernetes Deployment/Service/ConfigMap 和 GitHub Actions。一键加载示例以测试功能。
  • 语法高亮 – 为 YAML 和 JSON 的关键字、字符串、数字、布尔值和空值应用颜色。YAML 锚点(&)、别名(*)和注释(#)也会高亮显示。
  • 缩进选项 – 选择 2 空格或 4 空格缩进以匹配您的团队或项目编码风格。
  • 行号 – 输入和输出两侧都显示行号,方便引用特定行。
  • 文件上传/下载 – 直接上传 .yaml、.yml 或 .json 文件,并将转换结果下载为文件。
  • 输入/输出交换 – 使用”交换”按钮将输出结果带到输入以进行连续工作。
  • 自动保存 – 正在编辑的内容会自动保存到浏览器,并在刷新页面时恢复。
  • 剪贴板复制 – 一键将转换结果复制到剪贴板。

使用方法

  1. 选择转换方向 – 在顶部选择 YAML → JSON 或 JSON → YAML 转换方向。点击按钮会自动更改输入/输出区域的标签。
  2. 输入代码 – 在左侧输入区域输入或粘贴要转换的 YAML 或 JSON。您也可以使用”示例”按钮加载 DevOps 示例。
  3. 检查验证 – 在输入区域底部检查语法有效性状态。如果有错误会显示错误消息。
  4. 查看结果 – 在右侧输出区域查看转换结果。转换会在您输入时实时进行。
  5. 复制或下载 – 使用”复制”按钮复制到剪贴板,或使用”下载”按钮保存为文件。

YAML 与 JSON 比较

YAML 和 JSON 都是数据序列化格式,但各有其特点、优点和缺点:

  • 可读性 – YAML 基于缩进,对人类来说更容易阅读和编写。JSON 由于大量的大括号和逗号,在复杂数据中可读性可能降低。
  • 解析速度 – JSON 结构更简单,解析速度更快。由于锚点和别名等各种功能,YAML 解析更复杂。
  • 注释支持 – YAML 允许使用 # 符号添加注释。JSON 官方不支持注释。
  • 数据类型 – 两者都支持字符串、数字、布尔值、数组和对象。YAML 额外支持日期、时间戳和其他类型。
  • 使用环境 – YAML 主要用于配置文件(Docker、K8s、Ansible 等)。JSON 广泛用于 API 通信和 Web 应用程序数据交换。

DevOps 示例详情

本工具提供 5 个实践中常用的 DevOps 配置文件示例:

  • Docker Compose – 定义多容器应用程序的 docker-compose.yml 示例。展示包括 Web 服务器和数据库在内的多个服务的配置。
  • Kubernetes Deployment – 用于管理 Pod 部署的 K8s Deployment 清单。包含副本数量、容器镜像和资源限制的设置。
  • Kubernetes Service – 定义 Pod 网络访问的 K8s Service 清单。配置 LoadBalancer 和 ClusterIP 等服务类型。
  • Kubernetes ConfigMap – 用于存储应用程序设置的 K8s ConfigMap 示例。用于将环境变量或配置文件注入到 Pod 中。
  • GitHub Actions – 定义 CI/CD 工作流的 GitHub Actions 配置。展示包含构建、测试和部署阶段的典型工作流。

提示

  • 多文档 – 当 YAML 文档用 — 分隔时,每个文档会作为 JSON 数组的元素进行转换。
  • 锚点和别名 – YAML 锚点(&)和别名(*)在 JSON 转换时会被替换为引用的值。
  • 日期格式 – YAML 日期(2024-01-15)在 JSON 中会转换为字符串。如有需要可能需要额外处理。
  • 大文件 – 可以处理数千行的文件,但非常大的文件可能会影响浏览器性能。
  • 缩进一致性 – 在 YAML 中混合使用制表符和空格会导致错误。本工具使用基于空格的缩进。
  • 使用自动保存 – 即使您意外关闭页面,自动保存的内容也会恢复。转换方向也会保存。

常见问题

YAML 和 JSON 完全兼容吗?

在大多数情况下是的。JSON 是 YAML 的子集,因此所有有效的 JSON 都是有效的 YAML。但是,一些高级 YAML 功能(锚点、别名、自定义标签等)在 JSON 中没有直接对应,因此在转换时值可能会展开或忽略。

YAML 注释会转换为 JSON 吗?

不会,JSON 官方不支持注释。YAML 注释(# 后面的文本)在 JSON 转换时会被删除。如果注释包含重要信息,请单独保留。

转换时数据顺序会保留吗?

是的,本工具会保留键的顺序。从 YAML 转换为 JSON 和从 JSON 转换为 YAML 时,原始键的顺序会保持不变。但请注意,某些编程语言或工具在处理 JSON 对象时可能会更改顺序。

输入的数据会发送到服务器吗?

不会,所有转换都在浏览器中使用 JavaScript 处理。输入的 YAML 或 JSON 不会发送到任何服务器,让您可以安全地转换敏感配置文件(包括 API 密钥和密码)。自动保存功能也只使用浏览器的本地存储。

应该使用 2 空格还是 4 空格缩进?

请遵循您团队或项目的编码风格指南。一般来说,Kubernetes 和 Docker 通常使用 2 空格缩进。对于深度嵌套的结构,2 空格看起来更简洁,而 4 空格对于较简单的结构可能更易读。

YAML 解析错误应该怎么办?

检查输入区域底部显示的错误消息。常见的错误原因包括:(1)使用制表符 – YAML 只允许空格。(2)缩进不一致 – 同一级别的项目必须有相同的缩进。(3)特殊字符 – 冒号(:)和破折号(-)后面需要空格。(4)缺少引号 – 包含特殊字符的字符串需要用引号包裹。

可以用 kubectl 使用 JSON 转换的 Kubernetes 清单吗?

是的,kubectl 支持 YAML 和 JSON。您可以使用 kubectl apply -f 应用转换后的 JSON 文件,或使用 kubectl create -f 创建资源。JSON 格式在与 API 服务器进行程序化通信时也很有用。

联系我们