API配置用JSON转YAML:3分钟搞定,不报错

作者 · AI 阅读 4 场景应用

上周五下午,我正赶着给一个新微服务写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请求体/响应体示例

操作细节:

  1. 打开你的JSON文件(比如k8s-deploy.json
  2. 全选内容(Ctrl+A / Cmd+A)
  3. 复制到剪贴板(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工具,这是我在多个工具站里对比后选定的——它支持双向互转,且实时校验格式。

操作细节:

  1. 在工具页中,确认当前模式是“JSON → YAML”(默认就是)
  2. 把刚才复制的JSON代码粘贴到左侧输入框
  3. 点击“转换”按钮(或等自动转换,视工具设置而定)
  4. 右侧输出框立即显示对应的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代码可以直接复制到你的配置文件中。

操作细节:

  1. 点击输出框下方的“复制”按钮,或者全选YAML代码(Ctrl+A / Cmd+A)后复制
  2. 粘贴到你的YAML文件(比如k8s-deploy.yaml)中
  3. 验证:用kubectl apply -f k8s-deploy.yaml测试,或者用你本地的YAML校验工具(如yamllint)检查

反向操作: 有时候调试需要把YAML转回JSON看看结构。工具支持反向转换,只需选择“YAML → JSON”模式,粘贴YAML代码,就能得到格式化的JSON。我经常在调试CI/CD参数时用这个功能——GitLab Runner接收的是JSON格式的变量,但文档给的却是YAML示例,来回切就靠它。

这些坑别踩

  1. JSON末尾多逗号:JSON标准不允许末尾逗号({ "a": 1, }),但很多人习惯写。工具会直接报错,把多余逗号删掉即可。

  2. YAML缩进用Tab:YAML只认空格缩进,用Tab会导致解析失败。我同事有一次整段配置用Tab缩进,部署报错查了半小时才发现。工具输出的YAML默认用2空格缩进,完美避免此坑。

  3. 字符串未加引号:YAML里有些特殊字符串(如yesnotruefalse)会被自动解析为布尔值。比如enabled: yes会被当作enabled: true。工具会自动给这类值加引号,但如果你手动修改,记得给敏感字符串加引号。

  4. 多层嵌套缩进错位:手动改YAML时,经常出现缩进层级混乱。工具输出的缩进层级严格对应JSON结构,不会出错。

  5. 锚点与别名不支持: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"
      }
    }
  }
}

操作步骤:

  1. 复制这段JSON
  2. 打开 JSON转YAML工具
  3. 粘贴到左侧输入框
  4. 点击转换,得到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
  1. 复制YAML到docker-compose.yml,运行docker-compose up -d,服务正常启动。

注意: 这里version字段的3.8被自动加了引号,因为YAML解析器会把纯数字加小数点当成浮点数,加引号保证它是字符串。这就是用工具的另一个好处。

怎么避免转换后格式报错?

三个检查点:

  1. 缩进一致性:YAML缩进必须统一,工具默认2空格,别手动改成其他数量。
  2. 冒号后空格:YAML的键值对冒号后必须有一个空格,工具自动加好,你复制后别删。
  3. 数组的连字符:YAML数组元素用- 开头,工具自动生成,你手动增加元素时记得保持格式。

如果你不确定转换结果是否正确,可以用工具的反向功能:把生成的YAML再转回JSON,看是否和原始JSON一致。如果一致,说明转换无问题。

为什么推荐用这个工具而不是手写?

我测过4个在线转换工具,包括一个开源的CLI工具。这个JSON转YAML工具的优势很明显:

  • 实时校验:粘贴后立即显示错误,不用等提交到服务器才发现
  • 双向互转:同一个页面切换方向,不用打开两个工具
  • 格式纯净:没有多余的空格或换行,直接可用
  • 移动端友好:手机浏览器打开也能操作(亲测在微信内置浏览器上可用)

JSON转YAML工具 直接套你的数据,3分钟搞定配置转换,再也不用手动改格式。

← 返回「场景应用」分类
选择 打开 +新窗口 esc关闭