JSON 转 YAML
JSON 转 YAML 是把 JSON 文本转成 YAML/YML 配置格式的免费在线工具。粘贴 JSON 或拖入 .json 文件,即可在浏览器本地转出 YAML 并复制、下载:对象转映射、数组转序列、数字布尔 null 按类型输出,键顺序默认保留,可选 2/4 空格缩进与按键排序;“no”、“1.10”这类会被 YAML 误读成布尔或数字的字符串会自动加引号,中文和 emoji 不乱码,长字符串不会被折行、也不会生成难读的锚点别名。顶层是数组时还能转成 --- 分隔的多文档 YAML,适合 k8s 多资源清单。也能反向把 YAML 转回 JSON。全程文件不上传、无需注册,手机电脑都能用。
🔒 内容在你的浏览器内转换,未上传任何服务器。
如何使用JSON 转 YAML
粘贴 JSON 文本,或把 .json 文件拖入上方区域(浏览器本地处理、不上传,含密钥的配置也放心)。
按需设置 YAML 缩进(2 / 4 空格)、是否按键排序;顶层是数组时可勾选「转成 --- 多文档」,结果实时刷新。
在下方预览 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 | 为什么这样转 |
|---|---|---|
"replicas": 3 | replicas: 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 后就没有了,再转回来不会自动还原,改配置时留一份原始文件更稳妥。