YAML 格式化工具 - 在线校验 YAML 并与 JSON 互转

在线格式化、校验 YAML 内容,并支持 YAML 与 JSON 互转,适合整理 Docker、Kubernetes、CI/CD 和应用配置文件。

功能特点

  • 格式化 YAML 缩进和层级结构,提升配置可读性
  • 校验 YAML 语法,辅助排查缩进、冒号和列表格式问题
  • 支持 YAML 与 JSON 互相转换,便于跨格式处理配置
  • 识别锚点、别名和多文档边界,并提醒目标平台是否支持这些 YAML 特性
  • 适合处理 Docker Compose、Kubernetes、GitHub Actions 等配置片段

使用方法

  1. 粘贴 YAML 配置或需要转换的 JSON 内容
  2. 选择格式化、校验、YAML 转 JSON 或 JSON 转 YAML,并确认目标解析器和平台
  3. 检查缩进、标量类型、锚点展开和多文档边界,再复制回配置文件或部署脚本

示例输入

  • Docker Compose 环境变量

    services:
      api:
        image: example/api:1.2
        environment:
          DATABASE_URL: postgresql://db/app

    适合检查缩进、冒号、字符串类型和环境变量是否被 YAML 解析成预期值。

  • Kubernetes Deployment

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: api
    spec:
      replicas: 2

    适合格式化部署清单,并在提交集群前检查层级和字段拼写。

  • GitHub Actions 条件

    name: CI
    on:
      push:
        branches: [main]
    jobs:
      test:
        runs-on: ubuntu-latest

    适合排查 on、jobs、matrix 和表达式缩进导致的 CI 不触发问题。

  • 锚点与别名配置

    defaults: &defaults
      retries: 3
    api:
      <<: *defaults
      timeout: 5
    ---
    worker:
      <<: *defaults

    适合检查锚点、别名、合并键和多文档边界;转换或部署前要确认目标解析器支持方式。

  • 带引号的标量类型

    enabled: "true"
    retries: 3

    当前解析器会保留带引号的 true 为字符串,同时把 3 解析为数字;转换成 JSON 后应核对类型。

示例输出

  • Docker Compose 环境变量

    YAML 有效;services.api.environment.DATABASE_URL 为字符串;可转换为对应 JSON 对象
  • Kubernetes Deployment

    YAML 有效;kind=Deployment;spec.replicas=2;缺少 selector/template 时平台校验仍会失败
  • GitHub Actions 条件

    YAML 有效;workflow 名称 CI;push 分支 main;job test 运行于 ubuntu-latest
  • 锚点与别名配置

    解析结果:defaults 锚点被 api 和 worker 别名引用;转换后应核对 retries、timeout 和多文档边界
  • 带引号的标量类型

    {
      "enabled": "true",
      "retries": 3
    }

常见错误

  • YAML 使用空格表达层级,混入 Tab 或少一个空格就可能改变配置结构。
  • on、yes、no、数字和日期在不同 YAML 解析器中的类型规则可能不同,不能只看文本外观。
  • 环境变量、密码和 URL 中的冒号、#、{ } 等字符必要时需要加引号。
  • YAML 能通过语法校验不代表 Kubernetes、Docker 或 CI 平台的字段和业务语义正确。
  • 锚点和别名只是 YAML 表达能力,转换成 JSON 或交给不支持的目标平台时可能被展开、丢弃或拒绝。

适用场景

  • Docker Compose 配置排查
  • Kubernetes 清单校验
  • GitHub Actions 调试
  • YAML 与 JSON 互转

实操检查

  • 核对 YAML 格式化与类型

    固定输入:name: Toolbox items: - json - sql;步骤:点击“格式化”,再输入 name: Toolbox count: 2 并点击“转 JSON”;预期结果:列表项缩进为两个空格,JSON 输出中的 count 为数字 2;失败判断:列表没有挂在 items 下,或 count 被错误输出为字符串。

  • 核对 JSON 转 YAML 和失败判断

    固定输入:{"name":"Toolbox","items":["json","sql"]};步骤:点击“JSON 转 YAML”,再输入 {name: Toolbox} 并点击同一按钮;预期结果:第一次输出 name 与两项列表,第二次不产生有效输出并显示 JSON 解析错误;失败判断:非 JSON 输入被静默接受,或失败后仍展示上一次成功结果。

页面专属核验

使用前与操作中

  • 先区分 YAML 格式化/校验、YAML 转 JSON 和 JSON 转 YAML;前三者使用 yaml 包解析,JSON 转 YAML 额外要求输入能被原生 JSON.parse 接受。
  • 注意解析边界和类型变化:YAML 的缩进、序列、标量、引号、空值和重复键会影响解析结果,转换到 JSON 时只保留可由 JSON 表示的值和结构。
  • 把“YAML 有效”理解为当前 yaml parser 能解析,不等于 Kubernetes、CI、应用配置或其他消费端 schema 有效;格式化后要按目标解析器回读。

结果出来后

  • 输入 `name: Toolbox\nitems:\n- json\n- sql` 格式化后,是否把列表缩进为 ` - json` 与 ` - sql`,并保持 name 与 items 的结构?
  • 输入 `name: [broken` 校验或格式化时,是否返回解析错误而不是输出看似完整的 YAML;有效 YAML 转 JSON 是否得到正确的字符串、数字、数组层级?
  • 输入 `{"name":"Toolbox","items":["json","sql"]}` 做 JSON 转 YAML 时,是否只按严格 JSON 语法成功,并在落地配置前用真实 schema、环境变量和消费程序复核类型与默认值?

相关工具

  • JSON 工具:统一处理 JSON 格式化、校验、树形查看、Schema、CSV 转换、AI 响应分析和 JSON 修复
  • 文本对比:按行对比文本、配置、日志和接口响应差异
  • 代码格式化:统一格式化和轻量压缩 HTML、CSS、JavaScript 代码
  • XML 格式化:格式化、压缩和校验 XML 文档

工具边界

  • 格式化和 YAML/JSON 转换不能替代 Kubernetes、Docker 或 CI 平台的实际校验。
  • 不同 YAML 解析器的类型推断和特性可能不同。
  • 不要把生产密钥、Token 和完整部署凭据粘贴到在线环境。

与相似工具的区别

  • JSON 工具:YAML 便于编辑多行配置和注释;JSON 语法更严格,跨语言传输时类型边界通常更可预测。

安全与兼容性

  • YAML 格式化与 JSON 转换在浏览器内运行,不会联系 Kubernetes、Docker 或 CI 平台。
  • 不可信 YAML 在其他解析器中可能触发自定义标签或资源消耗,部署前应使用安全加载模式和平台校验。

下一步排查

  1. 先校验缩进、标量类型、锚点和多文档边界,再确认目标平台和 YAML 解析器版本。
  2. 用 JSON 或文本对比工具检查转换前后结构是否改变。
  3. 部署失败时结合平台事件、日志和环境变量配置继续排查。

常见问题

YAML 格式正确为什么部署仍然失败?

语法校验只说明 YAML 能被解析,仍要检查目标平台的 API 版本、字段拼写、权限、镜像和环境变量。

YAML 中的字符串什么时候需要引号?

包含冒号、井号、特殊字符,或容易被解析为布尔值、数字、日期的内容,建议显式加引号并在目标解析器中验证。

YAML 转 JSON 后为什么结构变了?

锚点、别名、多文档和标量类型可能在转换器中被展开或归一化;应对照目标解析器的结果,并确认部署平台期望的字段结构。