Skip to main content
UFOZoo

JSON转YAML 在线转换Docker/K8s配置工具

json转YAML在线工具:把JSON一键转为YAML配置,支持实时校验和语法高亮,适合Docker Compose、Kubernetes与API配置文件。

更新于 2026-08-26

相关工具

功能特性

  • 一键 JSON 转 YAML:输入即转换,无需点击任何按钮
  • 实时校验与精确定位:JSON 无效时在红色行号处高亮错误行列
  • 双向支持:左侧粘贴 YAML 也能转回 JSON(反向工作流见 yaml-to-json)
  • 保留数据类型:数字保持数字、布尔值保持布尔值、null 转为 YAML 的 null
  • 2 空格缩进输出,符合 Docker Compose 与 Kubernetes 清单的书写惯例
  • 长字符串与 URL 永不换行截断:输出行宽与输入保持一致
  • 双面板语法高亮:输入侧 JSON 键值着色,输出侧 YAML 键/注释/锚点着色
  • 拖拽 .json 或 .yaml 文件到编辑区,或点击文件夹图标从设备打开
  • 一键将结果保存为 .yml 文件,或复制到剪贴板
  • 从容处理深层嵌套:多级对象、对象数组与混合数组都不会卡顿
  • 适合把 API 响应迁移成配置文件、从 JSON 服务定义编写 Docker Compose、转换 OpenAPI JSON 规范

使用方法

  1. 1把 JSON 粘贴到左侧面板,YAML 转换会随输入即时完成:没有转换按钮需要点击。
  2. 2从 Postman、API 文档或抓包工具复制 JSON 响应,粘贴到这里即可得到可直接编辑的 YAML 配置。
  3. 3把 .json 文件拖到编辑区,或点击文件夹图标从设备打开。无需上传,无服务器。
  4. 4转换后点击复制图标获取 YAML,粘贴到 docker-compose.yml 或 Kubernetes 清单中。
  5. 5点击保存按钮把输出下载为 converted.yml,内容与屏幕显示完全一致。
  6. 6试试示例按钮(Docker Compose、API Response、Kubernetes Manifest),直观理解嵌套 JSON 如何映射为 YAML。
  7. 7在左侧粘贴 YAML 即可反向转换:工具自动识别格式并输出 JSON。
  8. 8输入无效时左侧行号变红:错误面板会说明问题原因和位置。
  9. 9覆盖原文件前先检查输出:由 JSON 生成的 YAML 使用 2 空格缩进,含特殊字符的字符串会被加引号。
  10. 10用底部状态栏查看输入大小与检测到的转换方向(JSON → YAML 或 YAML → JSON)。

常见问题

如何把 JSON 转成 YAML?

把 JSON 粘贴到左侧面板,右侧立即显示 YAML 输出。没有转换按钮:工具随输入实时处理。输出采用标准 2 空格缩进,可直接粘贴到 Docker Compose、Kubernetes 或任意配置文件中。

JSON 和 YAML 有什么区别?

JSON 是 API 使用的严格数据格式:键和字符串必须加引号,且不支持注释。YAML 是超集,允许注释(#)、不加引号的字符串、锚点与多行块,因此常用于配置文件。本工具在两者之间转换时保持底层数据结构不变。

转换会保留数据类型吗?

会。数字保持数字,true/false 保持布尔值,null 转为 YAML 的 null,字符串保持字符串。一个注意点:JSON 中已经是字符串的 "true" 或 "123" 在 YAML 输出中会加引号,避免被重新解析成其他类型。

为什么 YAML 输出中有些字符串被加了引号?

js-yaml 会给可能被误读为其他类型的字符串加引号,例如 '123'、'true'、'null',以及包含 ':'、'#' 或开头有特殊字符的字符串。加引号能保证 YAML 再次解析时它仍是字符串。这是有意为之的安全行为。

JSON 的 null 转成 YAML 是什么?

JSON null 会变成 YAML 的 null 值,通常写作 'null'。YAML 也接受 '~' 或留空表示 null,但转换器为清晰起见输出字面量 'null'。如果需要空字符串,请在转换前把 JSON 中的值改为 ""。

能转换大型 JSON 文件吗?

可以,典型的 API 响应和配置文件(几 MB 以内)即时完成。超大文件(10 MB+)可能让浏览器变慢,因为一切都在本地运行。超大文件建议用命令行工具,如 yq(yq e -P)或 Python 的 PyYAML。

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

常见原因:尾随逗号(不允许)、用了单引号代替双引号、键没加引号、JSON 里写了注释、包含未转义的控制字符。校验器会用红色高亮错误行和列:查看错误面板中的提示并修正对应位置。

YAML 输出支持注释或锚点吗?

生成的 YAML 不会添加注释,因为 JSON 输入本身不携带注释(JSON 没有注释语法)。也不会生成锚点:输出是完整自足的。不过,如果你在左侧粘贴含锚点的 YAML,反向转换会把它展开为普通 JSON 值。

能把 Kubernetes 清单或 Docker Compose 的 JSON 转成 YAML 吗?

可以。粘贴清单的 JSON 形式(例如 kubectl -o json 导出的内容),即可得到等价的 YAML 清单,采用 2 空格缩进。注意 YAML 的书写差异(如空对象的写法)不会改变清单的含义。

为什么转换后的 YAML 在 Docker Compose 或 Kubernetes 中解析失败?

常见元凶是看不见的:检查工具预期空格却出现了 Tab(YAML 禁止用 Tab 缩进)、未加引号的值看起来像其他类型("on"、"yes"、"null")、或包含 ':'、'#' 等特殊字符的字符串改变了含义。本工具会给歧义字符串加引号并输出 2 空格缩进,如果解析仍然失败,请用能显示具体行号的 YAML 检查工具排查,并确认没有用会插入 Tab 的编辑器改过文件。

这个工具支持离线使用吗?

支持。所有逻辑都打包在页面里并本地运行:首次加载后断网也能继续转换。但页面本身在重复访问时仍可能需要网络加载。

可以用 Python 或命令行工具把 JSON 转成 YAML 吗?

可以。Python 中 json.load() 加 PyYAML 的 yaml.safe_dump() 就能完成同样的转换。命令行方面,yq(yq e -P)可以把 JSON 转成 YAML 并支持自定义缩进,jq 可以先预处理 JSON。一次性转换和查看用本页面更快,脚本和批处理任务则是命令行工具的强项。

它和 yaml-to-json 工具有什么区别?

两个工具底层都支持同一套双向转换。本页面为 JSON → YAML 工作流定制(JSON 优先的示例与帮助),yaml-to-json 则为 YAML → JSON 方向定制。按你的任务选择即可。

能把日期或时间戳转成 YAML 吗?

可以,但注意转换会把值保留为普通字符串:JSON 字符串 "2025-07-01T08:30:00Z" 在 YAML 中仍是带引号的字符串,不会被重新解释为时间戳。如果需要 YAML 时间戳,请手动编写 YAML。

为什么我的 json转yaml 在线转换器会把中文、日文或 emoji 显示成乱码?

YAML 是 UTF-8 格式,本工具会原样保留 Unicode:中文、日文和 emoji 都能正常转换。如果看到乱码(如 é䏿),问题出在上游:原 JSON 文件用错误的编码(比如把 GBK 当成 UTF-8)打开或复制。把源文件重新存为 UTF-8 再转换即可。

能修改 YAML 输出的缩进吗?

输出固定为每级 2 空格,符合 Docker Compose、Kubernetes 与多数 YAML 检查工具的惯例。如果项目需要 4 空格或 Tab,请保存输出后用格式化工具重新缩进,或使用 yq(yq e -P)批量转换并自定义缩进。

支持 JSON Lines(JSONL)吗?

不支持。每次粘贴一个 JSON 文档。JSON Lines(JSONL/NDJSON)是换行分隔的独立 JSON 对象序列,本工具不把它当作单个文档解析。由于每一行本身都是合法 JSON,可以逐行转换,或对 JSONL 文件使用 jq 这类流式工具。

JSON 中有重复键会怎样?

JSON.parse 会保留重复键的最后一个值:前面的值被静默覆盖,YAML 输出中每个键只有一项。JSON 语法上允许重复键,但这几乎总是错误;如果希望全部数据保留,请先从输入中删除重复键。

能从 URL 加载 JSON 吗?

不能。本工具不抓取远程 URL。请复制 JSON 内容粘贴到左侧面板,或打开本地 .json 文件。