YAML 格式化工具 - 在线校验 YAML 并与 JSON 互转
在线格式化、校验 YAML 内容,并支持 YAML 与 JSON 互转,适合整理 Docker、Kubernetes、CI/CD 和应用配置文件。
功能特点
- 格式化 YAML 缩进和层级结构,提升配置可读性
- 校验 YAML 语法,辅助排查缩进、冒号和列表格式问题
- 支持 YAML 与 JSON 互相转换,便于跨格式处理配置
- 识别锚点、别名和多文档边界,并提醒目标平台是否支持这些 YAML 特性
- 适合处理 Docker Compose、Kubernetes、GitHub Actions 等配置片段
使用方法
- 粘贴 YAML 配置或需要转换的 JSON 内容
- 选择格式化、校验、YAML 转 JSON 或 JSON 转 YAML,并确认目标解析器和平台
- 检查缩进、标量类型、锚点展开和多文档边界,再复制回配置文件或部署脚本
示例输入
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、环境变量和消费程序复核类型与默认值?
相关工具
工具边界
- 格式化和 YAML/JSON 转换不能替代 Kubernetes、Docker 或 CI 平台的实际校验。
- 不同 YAML 解析器的类型推断和特性可能不同。
- 不要把生产密钥、Token 和完整部署凭据粘贴到在线环境。
与相似工具的区别
- JSON 工具:YAML 便于编辑多行配置和注释;JSON 语法更严格,跨语言传输时类型边界通常更可预测。
安全与兼容性
- YAML 格式化与 JSON 转换在浏览器内运行,不会联系 Kubernetes、Docker 或 CI 平台。
- 不可信 YAML 在其他解析器中可能触发自定义标签或资源消耗,部署前应使用安全加载模式和平台校验。
下一步排查
- 先校验缩进、标量类型、锚点和多文档边界,再确认目标平台和 YAML 解析器版本。
- 用 JSON 或文本对比工具检查转换前后结构是否改变。
- 部署失败时结合平台事件、日志和环境变量配置继续排查。
常见问题
YAML 格式正确为什么部署仍然失败?
语法校验只说明 YAML 能被解析,仍要检查目标平台的 API 版本、字段拼写、权限、镜像和环境变量。
YAML 中的字符串什么时候需要引号?
包含冒号、井号、特殊字符,或容易被解析为布尔值、数字、日期的内容,建议显式加引号并在目标解析器中验证。
YAML 转 JSON 后为什么结构变了?
锚点、别名、多文档和标量类型可能在转换器中被展开或归一化;应对照目标解析器的结果,并确认部署平台期望的字段结构。