← 返回工具箱
🔄 YAML/JSON转换

YAML ↔ JSON 互转

YAML 输入 / 输出
JSON 输入 / 输出

📖 YAML 与 JSON 对比详解

什么是 YAML?

YAML(YAML Ain't Markup Language,递归缩写)是一种人类可读的数据序列化格式,设计目标是简洁、易读。它广泛用于配置文件(如 Docker Compose、Kubernetes、GitHub Actions、Ansible),因为它比 JSON 更易于人工编辑和阅读。

什么是 JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,源自 JavaScript,但目前被几乎所有编程语言支持。它是 REST API、前后端数据传输、配置存储的事实标准,语法严格,机器解析效率高。

语法对比

特性YAMLJSON
注释支持(# 开头)不支持
字符串引号通常可省略必须使用双引号
尾随逗号不需要逗号不允许尾随逗号
缩进强制(有语义)仅用于美化,无语义
多行字符串原生支持(|、> 语法)需用 \n 转义
数据类型自动推断(更丰富)显式(string需引号)
文件体积通常更小通常更大
解析难度复杂(歧义较多)简单(规范严格)

等效写法示例

# YAML 写法
server:
  host: localhost
  port: 8080
  tags:
    - web
    - api
  tls: true

// 等效 JSON 写法
{
  "server": {
    "host": "localhost",
    "port": 8080,
    "tags": ["web", "api"],
    "tls": true
  }
}

YAML 特有语法

语法用途示例
|(竖线)保留换行的多行字符串(literal block)message: |
  line1
  line2
>(折叠块)折叠换行的多行字符串(folded block)desc: >
  long text
  continues
& / *锚点(定义/引用)base: &anchor {key: val}
ref: *anchor
---文档分隔符(一个文件多份文档)--- # 文档开始
!!type显式类型标注value: !!str 123

适用场景推荐

场景推荐格式原因
配置文件(CI/CD、容器、基础设施)YAML可读性强,支持注释,易维护
REST API 数据交换JSON标准通用,解析快,浏览器原生支持
前后端接口协议JSONJavaScript 原生支持,工具链成熟
Kubernetes / Helm ChartYAML行业标准,层级清晰
npm/package.jsonJSONNode.js 生态标准
Swagger / OpenAPI 规范YAML 或 JSON两者均官方支持

常见 YAML 陷阱

💡 小贴士:在团队协作中,建议为 YAML 配置文件使用 yamllint 等 linter 工具进行校验,避免因缩进错误或特殊值解析问题导致的运行时异常。JSON 则可以使用 JSON.parse() 快速验证合法性。