当前位置: 首页 > news >正文

YAML 知识小课堂

YAML(YAML 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:00+08:00带时区

❌ 常见错误(速记版)

错误写法正确写法速记原因
name:"Tom"name: "Tom"冒号后面必须带空格
Tab 缩进空格缩进YAML 不认 Tab,只用空格
field: undefinedfield: null/field: ~YAML 没有 undefined,空值只用null/~
code: 08080code: "08080"0开头数字易变八进制,加引号锁死字符串
switch: yesswitch: "yes"yes/no会被转布尔,文字要加引号
2空格、4空格混用缩进全局统一缩进空格数缩进乱,直接解析报错
empty: ""当作空值empty: null空字符串≠空值,两种类型不能混用

🚀 实际应用示例

Docker Compose
services:web:image:nginx:latestports:-"80:80"environment:NODE_ENV:production

Kubernetes
apiVersion:v1kind:Podmetadata:name:my-podspec:containers:-name:nginximage:nginx:1.21ports:-containerPort:80

Spring Boot
server: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:!!bool"true"price:!!float"9.99"

📌 YAML 速查总结

  • ✔ 使用缩进表示结构(禁止 Tab)
  • ✔ 键值对:key: value
  • ✔ 列表:- item
  • ✔ 支持注释:# comment
  • ✔ 支持多行字符串(|/>
  • ✔ 支持引用(&/*/<<
  • ✔ 适合配置文件与 DevOps 场景
测试效果


🎯 一句话总结

YAML 的本质是:

用“人类友好的缩进结构”替代“机器友好的括号结构”。

📝 实战互动征集:

结合项目场景聊聊,你会优先选 JSON 还是 YAML?欢迎在评论区分享你的选型思路与实操技巧。

http://www.jsqmd.com/news/1138317/

相关文章:

  • .NET 8 与 .NET 9 即将停止支持,微软建议升级至 .NET 10
  • 当我想给小说配音时,我到底经历了什么
  • Trellis + Matt Pocock skills实战上手与经验分享:比superpowers更完整的Agent增强框架
  • 【复现】基于改进自适应完备集合经验模态分解的混合储能辅助火电机组调频的协同控制策略(Matlab代码实现)
  • LitCAD终极秘籍:3天从CAD小白到绘图高手
  • 创梦汤锅学习日记day45
  • Go实现Windows文件按后缀自动分类整理工具
  • 茶麸养发和普通养发有什么区别?相信爱美之人都想知道的秘密
  • openclaw-大模型配置
  • 【5天实战】从零构建AI-Native组织:飞书+Bot+Gitee全链路自动化实战指南—FAQ与附录
  • 从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要
  • 小说下载器终极指南:一键保存200+小说网站,打造你的私人数字图书馆
  • 智能一键下载:专业级电子课本解析工具如何解决教师资源获取难题
  • 第 5 篇:节点重启自愈——两阶段模块恢复机制
  • 区位码转汉字机内码
  • 朗伯光度立体法 Python 3.11 实现:从 3 光源图像到法线贴图的完整流程
  • Mac鼠标滚动救星:用Mos告别卡顿,实现触控板般的丝滑体验
  • 第 二 章线性代数
  • 贺存:深耕脑机接口前沿,以硬核自研技术,点亮青少年科创未来
  • 欧文·亚隆的《当尼采哭泣》(When Nietzsche Wept)精简总结
  • 财务报销终端怎么做审计留痕:附件目录、浏览器后台和远程维护三条线
  • ChatGPT 核心技术 RLHF 实战解析:从 TAMER 到 PPO 的 3 阶段训练流程
  • 性价比高的看广告服务商哪家好
  • FastAPI 请求头与 Cookie:Web 世界的“身份证”与“通行证”
  • 如何快速配置Qwen图像编辑模型:面向AI创作者的完整指南
  • clickhouse24.9.2.42单机版linux安装
  • AI时代,如何从“写代码”小白变身大模型高手?收藏这份程序员转型指南
  • 城市生命线智慧管网建设落地指南|北京益豪时代一站式解决地下管网安全管控难题
  • 从拆解到设计:基于ME4057与CN5711的5V/1A充电宝LED灯PCB布局3要点
  • 基于 STM32 的实验室药品自动存取与库存管理系统设计