YAMLYAML Ain’t a Markup Language是一种人类可读的数据序列化语言由 Clark Evans、Ingy döt Net 和 Oren Ben-Kiki 于 2001 年提出。它以缩进表示结构广泛用于配置文件与数据交换场景。 核心特点YAML 是 JSON 的超集所有合法 JSON 都是合法 YAML但 YAML 更简洁易读。✨ 核心特点特性说明可读性强接近自然语言结构清晰支持注释使用#添加说明跨语言主流编程语言均支持解析JSON 兼容可直接包含 JSON 风格数据简洁表达依赖缩进而非括号结构###️ 基本语法name:张三age:25isStudent:falsehobbies:-编程-阅读-音乐address:city:北京zip:100000 数据类型说明类型示例说明字符串hello/hello world一般无需引号特殊情况需加整数42自动识别浮点数3.14自动识别布尔值true / false也支持 yes/no、on/off空值null或~等价数组- item或[1,2,3]支持块级与行内对象key: value缩进表示层级日期2024-07-06ISO 8601时间2024-07-06T12:00:0008:00带时区❌ 常见错误速记版错误写法正确写法速记原因name:Tomname: Tom冒号后面必须带空格Tab 缩进空格缩进YAML 不认 Tab只用空格field: undefinedfield: null/field: ~YAML 没有 undefined空值只用null/~code: 08080code: 080800开头数字易变八进制加引号锁死字符串switch: yesswitch: yesyes/no会被转布尔文字要加引号2空格、4空格混用缩进全局统一缩进空格数缩进乱直接解析报错empty: 当作空值empty: null空字符串≠空值两种类型不能混用 实际应用示例Docker Composeservices:web:image:nginx:latestports:-80:80environment:NODE_ENV:productionKubernetesapiVersion:v1kind:Podmetadata:name:my-podspec:containers:-name:nginximage:nginx:1.21ports:-containerPort:80Spring Bootserver:port:8080spring:datasource:url:jdbc:mysql://localhost:3306/mydbusername:rootpassword:secret 进阶语法多行字符串保留换行description:|第一行 第二行 第三行折叠为一行summary:这是一段很长的文字 会被折叠成一行锚点与引用复用配置defaults:defaultsadapter:postgreshost:localhostdevelopment::*defaultsdatabase:dev_dbproduction::*defaultshost:prod-db.example.com类型强制转换age:!!str25flag:!!booltrueprice:!!float9.99 YAML 速查总结✔ 使用缩进表示结构禁止 Tab✔ 键值对key: value✔ 列表- item✔ 支持注释# comment✔ 支持多行字符串|/✔ 支持引用/*/✔ 适合配置文件与 DevOps 场景测试效果 一句话总结YAML 的本质是用“人类友好的缩进结构”替代“机器友好的括号结构”。 实战互动征集结合项目场景聊聊你会优先选 JSON 还是 YAML欢迎在评论区分享你的选型思路与实操技巧。