YAML 语法整理

举报
yd_47669746 发表于 2026/10/23 22:28:27 2026/10/23
【摘要】 YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化语言,广泛用于配置文件和数据交换。它以其简洁、易读和易写的特性而受到开发者的青睐。以下是对YAML的详细介绍,包括基本概念、语法规则、常见用法以及字面量和折叠风格的处理。

1. 基本语法

  • 键值对: 形式为 key: value。冒号后要留一个空格。

    name: John
    age: 30
    
  • 注释: 使用 #,可以注释一行或部分行。

    # 这是一个注释
    name: John # 这里也是注释
    

2. 缩进

YAML 使用缩进表示层级关系,缩进只能使用空格,推荐使用 2 个空格。

person:
  name: John
  age: 30

3. 数据类型

字符串

  • 字符串可以直接写,也可以用单引号 ' 或双引号 " 包裹。

  • 若字符串包含特殊字符,如 : 或换行符,需用引号。

    message: "Hello: World!"
    single_quote: 'YAML is easy'
    multiline: |
      This is a multi-line
      string.
    

布尔值

  • 使用 true / false 或 yes / no 来表示布尔值。

    is_admin: true
    active: yes
    

数字

  • 整数、浮点数可以直接写。

    age: 30
    height: 1.75
    

列表

  • 使用 - 表示列表项,每项缩进相同。

    fruits:
      - apple
      - banana
      - orange
    

字典

  • 嵌套的键值对可以直接缩进表示。

    person:
      name: John
      age: 30
      contact:
        email: john@example.com
        phone: 123456789
    

4. 复杂数据结构

列表中的字典

employees:
  - name: John
    age: 30
  - name: Jane
    age: 25

字典中的列表

languages:
  programming:
    - Python
    - JavaScript
  spoken:
    - English
    - Chinese

5. 锚点和引用

YAML 允许使用锚点 & 和别名 * 来复用相同的数据结构。

default: &default_values
  name: John
  age: 30

user:
  <<: *default_values
  role: admin

6. 特殊表示法

字符串块样式

  • 使用 | 表示保留换行的多行字符串。

    description: |
      This is a description
      with multiple lines.
    
  • 使用 > 表示折叠换行的多行字符串。

    description: >
      This is a description
      that will be rendered
      in a single line.
    

7. Null 值

  • 使用 null 或 ~ 表示空值。

    middle_name: null
    nickname: ~
    

8. 常用用例

配置文件

YAML 常用于配置文件,例如:

server:
  host: localhost
  port: 8080

database:
  user: admin
  password: secret
  timeout: 30

K8s 配置

Kubernetes 的资源配置也常使用 YAML 文件。

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      ports:
        - containerPort: 80

总结

  • 使用空格缩进表示层级关系。
  • 字典用 key: value 表示,列表用 - 表示。
  • 可以通过锚点和别名复用数据结构。
  • 支持多行字符串、布尔值、数字等多种数据类型。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。