API配置用JSON转YAML:3分钟搞定,不报错
上周五下午,我正赶着给一个新微服务写Kubernetes Deployment配置。手头有一个现成的JSON模板,但K8s只认YAML。我手动改缩进、去逗号、加冒号——结果Pod一直CrashLoopBackOff。排查了整整2小时,发现是YAML里一个缩进少了一格。
核心答案:用JSON转YAML工具,粘贴JSON自动生成标准YAML,支持双向互转,3分钟搞定,格式零错误。
我当场就把这个工具收藏了。现在每次从JSON转到YAML,或者从YAML转回JSON做调试,都用它。今天就把这套流程拆成3步,你照着做,以后配置转换再也不用手动改格式。
第1步:准备你的JSON代码
先找到你要转换的JSON代码。常见场景:
- Kubernetes Deployment/Service配置(JSON格式)
- Docker Compose环境变量(JSON格式)
- CI/CD流水线参数(如GitLab CI的trigger变量)
- API请求体/响应体示例
操作细节:
- 打开你的JSON文件(比如
k8s-deploy.json) - 全选内容(Ctrl+A / Cmd+A)
- 复制到剪贴板(Ctrl+C / Cmd+C)
输入示例:
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "nginx-deployment",
"labels": {
"app": "nginx"
}
},
"spec": {
"replicas": 3,
"selector": {
"matchLabels": {
"app": "nginx"
}
},
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx:1.25",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
输出截图描述: 页面上方有一个大输入框,标题显示“JSON”,框内已粘贴上述代码。
第2步:粘贴并一键转换
打开 JSON转YAML工具,这是我在多个工具站里对比后选定的——它支持双向互转,且实时校验格式。
操作细节:
- 在工具页中,确认当前模式是“JSON → YAML”(默认就是)
- 把刚才复制的JSON代码粘贴到左侧输入框
- 点击“转换”按钮(或等自动转换,视工具设置而定)
- 右侧输出框立即显示对应的YAML代码
转换后的YAML输出:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
注意: 如果JSON格式有问题(比如多了一个逗号),工具会标红提示。我遇到过最坑的是JSON末尾多了一个逗号,手动改眼睛都看花了,工具直接报错,一查就发现。
第3步:复制YAML直接用
转换完成后,YAML代码可以直接复制到你的配置文件中。
操作细节:
- 点击输出框下方的“复制”按钮,或者全选YAML代码(Ctrl+A / Cmd+A)后复制
- 粘贴到你的YAML文件(比如
k8s-deploy.yaml)中 - 验证:用
kubectl apply -f k8s-deploy.yaml测试,或者用你本地的YAML校验工具(如yamllint)检查
反向操作: 有时候调试需要把YAML转回JSON看看结构。工具支持反向转换,只需选择“YAML → JSON”模式,粘贴YAML代码,就能得到格式化的JSON。我经常在调试CI/CD参数时用这个功能——GitLab Runner接收的是JSON格式的变量,但文档给的却是YAML示例,来回切就靠它。
这些坑别踩
JSON末尾多逗号:JSON标准不允许末尾逗号(
{ "a": 1, }),但很多人习惯写。工具会直接报错,把多余逗号删掉即可。YAML缩进用Tab:YAML只认空格缩进,用Tab会导致解析失败。我同事有一次整段配置用Tab缩进,部署报错查了半小时才发现。工具输出的YAML默认用2空格缩进,完美避免此坑。
字符串未加引号:YAML里有些特殊字符串(如
yes、no、true、false)会被自动解析为布尔值。比如enabled: yes会被当作enabled: true。工具会自动给这类值加引号,但如果你手动修改,记得给敏感字符串加引号。多层嵌套缩进错位:手动改YAML时,经常出现缩进层级混乱。工具输出的缩进层级严格对应JSON结构,不会出错。
锚点与别名不支持:YAML的
&锚点和*别名功能,JSON不支持。如果你的YAML用了锚点,转JSON时会丢失。工具会保留原值但去掉锚点语法,所以转换前最好确认你不需要锚点特性。
一个完整案例
假设你有一个Docker Compose配置,原始是JSON格式,需要转换成YAML。
原始JSON:
{
"version": "3.8",
"services": {
"web": {
"image": "nginx:1.25",
"ports": ["80:80"],
"volumes": ["./html:/usr/share/nginx/html"]
},
"db": {
"image": "mysql:8.0",
"environment": {
"MYSQL_ROOT_PASSWORD": "rootpass",
"MYSQL_DATABASE": "myapp"
}
}
}
}
操作步骤:
- 复制这段JSON
- 打开 JSON转YAML工具
- 粘贴到左侧输入框
- 点击转换,得到YAML:
version: '3.8'
services:
web:
image: nginx:1.25
ports:
- '80:80'
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: myapp
- 复制YAML到
docker-compose.yml,运行docker-compose up -d,服务正常启动。
注意: 这里version字段的3.8被自动加了引号,因为YAML解析器会把纯数字加小数点当成浮点数,加引号保证它是字符串。这就是用工具的另一个好处。
怎么避免转换后格式报错?
三个检查点:
- 缩进一致性:YAML缩进必须统一,工具默认2空格,别手动改成其他数量。
- 冒号后空格:YAML的键值对冒号后必须有一个空格,工具自动加好,你复制后别删。
- 数组的连字符:YAML数组元素用
-开头,工具自动生成,你手动增加元素时记得保持格式。
如果你不确定转换结果是否正确,可以用工具的反向功能:把生成的YAML再转回JSON,看是否和原始JSON一致。如果一致,说明转换无问题。
为什么推荐用这个工具而不是手写?
我测过4个在线转换工具,包括一个开源的CLI工具。这个JSON转YAML工具的优势很明显:
- 实时校验:粘贴后立即显示错误,不用等提交到服务器才发现
- 双向互转:同一个页面切换方向,不用打开两个工具
- 格式纯净:没有多余的空格或换行,直接可用
- 移动端友好:手机浏览器打开也能操作(亲测在微信内置浏览器上可用)
用 JSON转YAML工具 直接套你的数据,3分钟搞定配置转换,再也不用手动改格式。