JSON 转 YAML

JSON 转 YAML 是把 JSON 文本转成 YAML/YML 配置格式的免费在线工具。粘贴 JSON 或拖入 .json 文件,即可在浏览器本地转出 YAML 并复制、下载:对象转映射、数组转序列、数字布尔 null 按类型输出,键顺序默认保留,可选 2/4 空格缩进与按键排序;“no”、“1.10”这类会被 YAML 误读成布尔或数字的字符串会自动加引号,中文和 emoji 不乱码,长字符串不会被折行、也不会生成难读的锚点别名。顶层是数组时还能转成 --- 分隔的多文档 YAML,适合 k8s 多资源清单。也能反向把 YAML 转回 JSON。全程文件不上传、无需注册,手机电脑都能用。

拖入 .json 文件,点击选择
文件不上传 · 浏览器本地转换 · 也可直接粘贴文本

🔒 内容在你的浏览器内转换,未上传任何服务器。

如何使用JSON 转 YAML

1

粘贴 JSON 文本,或把 .json 文件拖入上方区域(浏览器本地处理、不上传,含密钥的配置也放心)。

2

按需设置 YAML 缩进(2 / 4 空格)、是否按键排序;顶层是数组时可勾选「转成 --- 多文档」,结果实时刷新。

3

在下方预览 YAML(含字节数与文档数),点「复制」或「下载 YAML」保存为 .yaml 文件。

关于JSON 转 YAML的常见问题

json 转 yaml 会把文件上传到服务器吗?
不会。json 转 yaml 全程在你的浏览器本地完成,JSON 内容不会上传到任何服务器,关闭页面即清除,处理含密码、密钥、Token 的配置文件也放心。
手机上能把 json 转成 yaml 吗?
可以。本工具是纯网页实现,手机、平板、电脑浏览器打开即用,无需安装 App,也无需注册登录,json 转 yaml 的结果可以直接复制或下载成 .yaml 文件。
json 转 yaml 在线工具免费吗?要注册吗?
免费,也不用注册。json 转 yaml 全部由你本机的浏览器完成,没有服务器转换成本,因此不限次数、不加水印、不要求登录,复制结果和下载 .yaml 文件同样免费。
json 转 yaml 支持多大的文件?有大小限制吗?
可以粘贴文本,也可以拖入 .json 文件,单次输入按 UTF-8 字节计上限 100MB,超出会提示「输入过大」并建议拆分后再转。实际速度取决于设备内存,几千行的配置文件基本是瞬时完成,手机上建议控制在几 MB 以内。
json 转 yml 和 json 转 yaml 有区别吗?
没有区别。yml 只是 yaml 的另一种文件后缀,语法完全相同,json 转 yml 与 json 转 yaml 得到的内容一致。本工具下载的文件默认后缀是 .yaml,需要 .yml 时改一下后缀即可,Kubernetes、docker-compose、GitHub Actions 都能正常识别。
json 转 yaml 中文会不会乱码?
不会。json 转 yaml 输出的是可读的 UTF-8 文本,中文键名、中文值和 emoji 都原样保留,不会被转成 \uXXXX 形式的转义;下载的 .yaml 文件同样是 UTF-8 编码。
json 转 yaml 后键的顺序会变吗?
默认不变。json 转 yaml 会保留 JSON 里键的出现顺序,也可以勾选「按键排序」改成字母序。两个容易踩的点:一是形如 "1"、"2" 的整数样式键,JavaScript 对象规则会把它们按数值升序排到最前面,这是引擎行为而非转换错误;二是「按键排序」比的是字符串而不是数字,所以 "10" 会排在 "2" 前面,用数字当键名时留意这一点。
json 转 yaml 缩进能设成 4 个空格吗?
可以。缩进支持 2 空格和 4 空格切换,默认 2 空格——这是 Kubernetes、docker-compose、GitHub Actions 等生态的通行写法。另外长字符串不会按宽度折行,长 URL、Token、base64 复制出去不会被拆断。
json 数组怎么转成 --- 分隔的多文档 yaml?
当 JSON 顶层是数组时,勾选「顶层数组转成 --- 分隔的多文档 YAML」即可,数组里每个元素会输出成一个独立文档,适合 k8s 多资源清单。不勾选则整体输出为一个 YAML 序列;顶层不是数组时该选项不可用,空数组会退化成单个 [] 而不会产出空文档。
为什么 json 转 yaml 后字符串多了引号?
这是为了保证语义不变。no、yes、on、null、1.10、2026-08-07 这类文本在 YAML 里会被解析成布尔、数字或日期,所以 json 转 yaml 时会自动给它们加引号,这样再解析回来仍然是字符串(也就不会出现有名的 Norway 问题)。
json 转 yaml 里的大数字为什么变了?
因为超出 JavaScript 安全整数范围(9007199254740991)的整数在解析时就已丢精度,例如 19 位的雪花 ID。工具检测到这类数字会给出黄色提示,但不会伪造精度;建议在 JSON 里就把这类 ID 写成字符串。另外 JSON 里的 1.0 解析后是 1,转出的 YAML 会写成 1。

json 转 yaml 转出来长什么样,缩进怎么选

对象转成 YAML 映射、数组转成短横线序列,大括号、方括号和键上的引号全部去掉,层级改用缩进表示,默认 2 空格。下面用同一份服务配置逐行对照,左边是 JSON 写法,右边是本工具转出的 YAML。

同一份配置 json 转 yaml 的逐行对照(默认 2 空格缩进)
JSON 里的写法转出的 YAML为什么这样转
"replicas": 3replicas: 3数字、布尔、null 按类型原样输出,不加引号
"note": "no"note: 'no'no、yes、on 这类词在不少 YAML 解析器里会被读成布尔,加引号才保得住字符串
"version": "1.10"version: '1.10'不加引号会被当成数字 1.1,末尾的 0 就没了;工号「08」同理,不加引号会变成 8
"ports": [80, 443]ports: 换行接 - 80 - 443数组转成短横线序列,每项一行,比 JSON 少一层方括号
"env": {"TZ": "Asia/Shanghai"}env: 换行接 TZ: Asia/Shanghai嵌套对象降一级缩进,不再需要花括号
"标题": "小鹿工具"标题: 小鹿工具中文键名、中文值与 emoji 原样输出 UTF-8,不转成 \uXXXX

k8s 和 docker-compose 的 json 怎么转成 yaml

这三类配置的差别只在两个开关上:k8s 多资源清单要勾「多文档」,docker-compose 与 GitHub Actions 保持默认 2 空格即可。下面按场景给出具体设置。

Kubernetes 多资源清单
JSON 顶层是数组时勾选「顶层数组转成 --- 分隔的多文档 YAML」,数组里两个元素就会输出成两个以 --- 开头的独立文档。不勾选时整份是一个 YAML 序列(顶层一串短横线),那不是清单文件常见的写法。
docker-compose 配置
用默认 2 空格缩进。端口映射在 JSON 里本来就是字符串 "8080:80",转出的 YAML 会写成带引号的 '8080:80',含义不会跑偏,直接粘进 compose 文件即可。
GitHub Actions 工作流
触发器那一行会转成带引号的 'on':,因为 on 在部分 YAML 解析器里是布尔字面量。这是合法 YAML,键的实际内容仍是字符串 on;若你的工具链要求原样的 on:,把引号手动去掉即可。
接口返回的 JSON 改写成配置
把后端返回或抓包得到的 JSON 直接粘进上面的输入框,转成 YAML 当配置模板或接口文档示例,比手敲缩进快,也不会数错层级。
含密钥的配置文件
values.yaml、secret 这类带 Token 和密码的内容也能放心转:转换在你的浏览器里完成,JSON 不会上传到服务器,关闭页面即清除。

json 转 yaml 有哪些内容会转不过去

转不过去的主要有两类:YAML 独有而 JSON 根本没有的东西,以及在 JSON 解析阶段就已经损失的数字精度。下面四条是转换前值得先知道的边界。

反过来用「YAML 转 JSON」时也有一条对称的损失:原 YAML 里的注释和锚点在转成 JSON 后就没有了,再转回来不会自动还原,改配置时留一份原始文件更稳妥。