YAML 与 JSON 双向转换,支持复杂结构与错误定位。

切换工具
YAML0 字符 · 0 行
JSON0 字符 · 0 行

使用说明

用途

YAML 与 JSON 互转在线工具,支持复杂嵌套结构、数组、对象、字符串、数字、布尔、null、注释(YAML 转 JSON 时丢弃,JSON 转 YAML 时无源)。处理 YAML 多文档(--- 分隔)、锚点引用(&anchor / *ref)、多行字符串(| 保留换行、> 折叠空格)。常用于 Kubernetes manifest 编辑、CI 配置文件(GitHub Actions / GitLab CI)、Docker Compose、应用配置(Spring Boot application.yml)等场景。所有转换在浏览器本地完成。

操作步骤

  1. 左侧粘贴 YAML 或 JSON,工具自动检测格式
  2. 右侧实时输出转换后的另一种格式
  3. YAML → JSON:注释会被丢弃(JSON 不支持注释)
  4. JSON → YAML:默认 2 空格缩进,可调 4 空格
  5. 多文档 YAML(--- 分隔)会转为 JSON 数组
  6. 锚点(&anchor)和引用(*ref)转 JSON 时展开为重复对象
  7. 多行字符串(| > | + |-)保留 / 折叠规则正确处理
  8. 语法错误高亮:缩进不一致、引号未闭合、tab 字符(YAML 禁用)

常见问题

YAML 为什么对缩进这么敏感?
YAML 用缩进表示层级(类似 Python),不用大括号。**缩进必须用空格(禁用 tab)**,同一层级必须缩进相同空格数。这让 YAML 简洁,但也容易出错。**最佳实践:编辑器强制 2 空格缩进 + 显示空白字符**,避免 tab 混入。
YAML 的 yes / no / on / off 会被当成布尔值吗?
**YAML 1.1 标准里 yes/no/on/off/true/false/y/n 全是布尔**,这是著名的"挪威问题"(NO 国家代码被解析为 false)。**YAML 1.2(2009 起)只识别 true/false**,但很多老库(PyYAML)默认仍用 1.1。保险做法:所有字符串值加引号,特别是 "yes" "no" "off" 这种。
多行字符串 | 和 > 区别?
| 保留换行(适合代码块、日志),输出为 multiline。> 折叠空格(适合长文本段落),换行被替换为空格。后缀:- 移除末尾换行(默认保留一个),+ 保留所有末尾空行。常见用法:Kubernetes ConfigMap 里嵌入 nginx.conf 配置用 |。
锚点 &name 和引用 *name 怎么用?
YAML 锚点机制可以复用对象。`defaults: &default {timeout: 30, retries: 3}` 定义锚点,下方 `service1: <<: *default` 引用并合并。**转 JSON 时锚点会被展开为重复对象**(JSON 不支持引用)。CI 配置文件常用这个减少重复。
YAML 比 JSON 更适合什么场景?
YAML 适合:人工编辑的配置文件(Kubernetes / Docker Compose / GitHub Actions / Ansible),多行字符串嵌入,需要注释。**JSON 适合:API 数据交换**(紧凑、解析快、所有语言原生支持)。**不建议用 YAML 做 API 接口**(解析慢、易出错、注释功能 API 不需要)。

应用场景

  • Kubernetes manifest 编辑:deployment.yaml 复杂时转 JSON 用工具校验,再转回
  • GitHub Actions / GitLab CI 配置:错误时转 JSON 看清楚嵌套
  • Docker Compose:docker-compose.yml 转 JSON 用 jq 处理后再转回
  • Spring Boot 配置:application.yml 转 application.json 看清层级
  • API 接口文档:YAML 写的 OpenAPI 转 JSON 给工具消费

适用场景

K8s manifest 编辑、CI 配置文件、Docker Compose、Spring Boot 配置、OpenAPI 文档。运维、后端、DevOps 常用。多文档支持、锚点展开、多行字符串保留 / 折叠是关键差异点。