JSON 转 YAML
把 JSON 配置转成缩进式 YAML,自动处理数字与字符串的类型歧义,本地转换不上传。
JSON 转 YAML
本地转换,内容不上传。转换后会校验 JSON 语法,语法有误会提示具体位置。
为什么配置文件常用 YAML
YAML 用缩进表达层级,不需要成对的括号和引号,同样的配置写出来行数更少、可读性更好。Kubernetes 清单、CI 流水线定义、Ansible 剧本、Docker Compose 文件都是 YAML 格式。但 YAML 的缩进敏感,多一个空格或少一个空格含义就变了,而且它支持锚点和引用,复杂文件人工核对成本不低,所以工程上常见做法是用 JSON 生成、用 YAML 阅读。
转换时要注意的细节
数字和字符串的区分是重点。JSON 里 "8080" 是字符串,8080 是数字,转换后如果被 YAML 解析器当成另一种类型,配置就会出错,所以转换器会给可能被误判的字符串加引号。
布尔值同理。JSON 的 true 和字符串 "true" 在 YAML 里都可能被解析成布尔真值,本工具会把字符串形式的 true、false、yes、no、null 加引号保护。
嵌套与数组
对象转成缩进的键值对,数组转成以短横线开头的列表。如果数组元素本身是对象,短横线与第一个键写在同一行,后续键对齐到短横线之后,这是 YAML 里最容易写错的地方。
格式对照
| 特征 | JSON | YAML |
|---|---|---|
| 可读性 | 括号层级多,长文件难读 | 缩进直观,接近自然书写 |
| 注释 | 标准不支持 | 支持 # 注释 |
| 缩进敏感 | 不敏感 | 敏感,空格数量必须一致 |
| 解析速度 | 快 | 较慢 |
| 典型用途 | 接口传输、数据存储 | 配置文件、编排清单 |
| 多文档 | 需外层数组 | 用 --- 分隔 |
常见问题
转换后数字变成字符串了怎么办?▼
本工具会给看起来像数字的字符串加引号,防止被 YAML 解析器当成数字。如果您的字段本来应该是数字,说明源 JSON 里它就是字符串,需要回源修正数据类型。
YAML 缩进能用 Tab 吗?▼
不能。YAML 规范明确禁止使用制表符缩进,必须用空格。混用空格和 Tab 是解析报错最常见的原因。
为什么 YAML 里有的值加了引号?▼
因为不加会被解析成其他类型。比如字符串 "true" 不加引号会被当成布尔真值,"8080" 会被当成数字,"yes" 会被当成真值。加引号是为了保住原始类型。
支持多文档 YAML 吗?▼
本工具把一份 JSON 转成一份 YAML。需要多文档时,可以把 JSON 顶层写成数组,转换后在每个元素之间插入 --- 分隔符。
生成的 YAML 能直接用于 Kubernetes 吗?▼
可以作为起点。K8s 清单还需要补 apiVersion、kind、metadata 等必需字段,并且要注意某些字段的值必须是字符串(如注解里的版本号),建议套用后先用 kubectl 的 dry-run 校验。