yaml语法

最近在写配置的时候, 发现很多配置文件都是用yaml语法, 比如docker-composer k8s等等. 因此整理一下yaml语法以备后续翻阅. 其实很简单, 一眼看上去和json类似.

可以通过网站校验yaml语法是否符合规则: https://www.bejson.com/validators/yaml_editor/

基本语法

  • 使用空格进行缩进(tab 不行)

  • 缩进的空格数目随意, 左侧对其即可.

  • 语法分割的冒号:和逗号,后面必须跟空格

    • 正因如此, 字符串可以直接写成这样: 1234,5678
  • #为整行注释

数据结构

哈希#

# 第一种写法, 同级元素整合为一个对象
hash1: 
  name: Xiaoming
  age: 15
# 第二种写法, 也可以写到一行
hash2: {name: XiaoMing, age: 15}
# 当哈希的 key 或 Value 是一个符合类型的时候. 可以使用 ? : 配合的方式. 
# 不过这玩意应该用不到吧,没有谁会写这么个配置
hash3: 
  ?
    name: XiaoMing
    age: 15
  : 
    address: BeiJing
  ? 
    name: LiMing
    age: 20

没了, 简单吧.

数组#

# 第一种写法, 使用中横线`-`分割的同级元素, 整合为一个数组
list1: 
  - value1
  - value2
# 第二种写法, 也可以写到一行
list2: [value1, value2]

基本类型#

# 基础类型直接写就行
number: 12.30
# 可以使用科学记数法表示
number2: 2.352145e+5
# 二进制表示法
number3: -b1010_0010
# 布尔值. true/false
isMan: true
# ~ 标识 null
parent: ~
# 时间使用 ISO8601 gesh格式标识
isoTime: 2021-12-26T14:45:03.394Z
isoDate: 2021-12-26
# 使用 !! 强制转换数据类型
# 内置类型包括: int, float, bool, str, binary(字符串), timestamp(时间), null, set, omap(哈希列表), pairs(哈希列表), seq(列表), map(哈希)
str1: !!str 1234
str2: !!str true

字符串#

其中字符串应该是使用场景最多的了.

# 默认直接写即可
# 注意, 若存在特殊字符会被转义
str1: 一行字符串
# 字符串中包含特殊字符或空格时, 需要使用引号包裹
str2: '空 格'
# 当单引号包裹的字符串中存在单引号, 要使用两个单引号进行转义
str3: '包含单''引号'
# 注意, 双引号字符串不会对字符串进行转义
str4: "空\n格"
# 写成多行的字符串, 从第二行开始要有缩进. 
# 注意, 这种方式, 会将行尾的换行转为空格. 故结果还是一行
str5: 多行字符串
  第二行
  第三行
# 在字符串前面添加标识符可标识不同的情况: 
# `|` 保留行尾换行符, 也会保留末尾的换行
# `>` 不保留行尾换行符, 但会保留末尾的换行. 若中间需要换行符, 留空行即可. 
# `|+` 保留末尾的换行, 也是默认行为
# `|-` 不保留末尾的换行
# `>+` 
# `>-`
str6: |
  添加标识符号的
  前面对其的缩进会被会被去掉
    但是, 已经对其的缩进差异会被保留. 比如这一行

符合类型#

以上所有类型可以混合使用. 等等吧, 大家都懂得

# 数组的元素是哈希
list: 
  - name: Name1
    age: 10
  - name: Name2
    age: 20
# 哈希的值是数组
hash: 
  hashList: [V1, V2]

特殊用法#

锚点复制#

用于对相同的内容进行复用.

names: 
  - name: &name1 XiaoMing
  # 这里引用上方的锚点, 既 &name1
  - name: *name1
# 复制对象
user1: &user1
  name: XiaoMing
  age: 20
user2: 
  # 引用对象的值. << 表示将内容合并到当前. 
  # 其想过相当于: user3
  <<: *user1
  # 可以覆写引用的内容
  age: 30
user3: 
  name: XiaoMing
  age: 30

标记分割#

可以将多个yaml配置写入到同一个文件中.

---
name: XiaoMing
# 三个点表示一个配置文件的结束
...
# 三个中横线标识一个配置文件的开头
#  一般使用`---`就可以不用再额外写 `...` 了
---
name: LiMing
...
posted @   烟草的香味  阅读(115)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2018-12-26 23种设计模式之迭代器模式
2018-12-26 23种设计模式之门面模式
2018-12-26 23种设计模式之策略模式
2018-12-26 23种设计模式之装饰模式
2018-12-26 23种设计模式之命令模式
2018-12-26 23种设计模式之责任链模式
2018-12-26 23种设计模式之中介者模式
点击右上角即可分享
微信分享提示
主题色彩