YAML(YML)语法详解

YAML(Yet Another Markup Language)是一种易读性强、简洁明了的数据格式,常用语言的配置文件、数据传输格式以及对象序列化等领域,比如Swagger定义API文档、Ansible配置文件等。下面对YAML的语法进行详细介绍。

## 1. 基本语法

### 1.1 键值对

键值对是YAML的基本元素,使用冒号(:)将键和值分开。键和值之间必须有一个空格。示例:

```yaml

name: Jon Snow

age: 26

title: King in the North

```

### 1.2 列表

使用中括号([])表示列表,列表中的元素以连字符(-)开头。示例:

```yaml

- apples

- oranges

- bananas

```

### 1.3 多行字符串

使用竖线(|)可以表示多行字符串。示例:

```yaml

description: |

Winterfell is a historic castle located in the north of Westeros. Built thousands of years ago, it has been occupied by House Stark for generations. The castle is home to the Stark family and their loyal bannermen.

```

### 1.4 组合使用

YAML允许把不同的数据类型组合使用,例如将键值对和列表混合使用。示例:

```yaml

name: Jon Snow

titles:

- King in the North

- Lord Commander of the Night's Watch

- Bastard of Winterfell

```

## 2. 数据类型

### 2.1 字符串

字符串可以使用单引号(')或双引号(")括起来,也可以不使用引号。示例:

```yaml

name: Jon Snow # 不使用引号

title: "King in the North" # 使用双引号

alias: 'Lord Snow' # 使用单引号

```

### 2.2 数字

YAML中的数字可以是整数或浮点数。示例:

```yaml

age: 26

height: 1.83

```

### 2.3 布尔值

YAML中的布尔值是true或false。示例:

```yaml

is_stark: true

is_targaryen: false

```

### 2.4 空值

YAML中的空值可以使用tilde(~)或null表示。示例:

```yaml

family_tree:

- Eddard Stark

- Catelyn Stark

- Sansa Stark

- Arya Stark

- Bran Stark

- Rickon Stark

- Jon Snow # 未知家族

allies: null # 没有盟友

```

## 3. 注释

YAML支持单行注释和多行注释。单行注释使用井号(#)开头,多行注释使用井号和连字符(#-)组合。示例:

```yaml

# This is a single-line comment.

#-

This is a

multi-line

comment.

-#

name: Jon Snow # This is a comment.

```

## 4. 引用

YAML中可以使用&和*来引用其他部分的数据。例如:

```yaml

house_stark: &stark

family_tree:

- Eddard Stark

- Catelyn Stark

- Sansa Stark

- Arya Stark

- Bran Stark

- Rickon Stark

members:

- *stark # 引用house_stark

```

## 5. 继承

在YAML中,继承可以使用>符号实现。示例:

```yaml

first: &abc

name: Jon Snow

age: 26

second:

<<: *abc

title: King in the North

```

## 6. 使用方法

YAML在配置文件和数据传输格式中应用普遍。以下是一些使用YAML的场景:

### 6.1 Ansible配置文件

Ansible是一种自动化工具,使用YAML格式的配置文件来定义任务和主机清单。示例:

```yaml

- name: Install Apache web server

hosts: webservers

become: yes

tasks:

- name: Install Apache

yum:

name: httpd

state: present

- name: Start Apache

service:

name: httpd

state: started

```

### 6.2 Swagger API文档

Swagger是一个用于描述和调用RESTful API的框架,使用YAML格式的文档描述API的操作和参数。示例:

```yaml

paths:

/users:

get:

summary: Get a list of users

responses:

'200':

description: OK

content:

application/json:

schema:

type: array

items:

type: object

properties:

name:

type: string

age:

type: integer

```

### 6.3 Docker Compose配置文件

Docker Compose是一种管理多个Docker容器的工具,使用YAML格式的配置文件定义各个容器的服务和网络。示例:

```yaml

version: '3'

services:

web:

build: .

ports:

- "5000:5000"

redis:

image: "redis:alpine"

```

## 7. 总结

YAML是一种方便易读的数据格式,支持键值对、列表、多行字符串、注释、引用和继承等语法,使用广泛于各种配置文件、数据传输格式和对象序列化等领域。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(87) 打赏

评论列表 共有 1 条评论

一身公主命 1年前 回复TA

行走过彷徨,经历过迷茫,面对过苦难,笑傲过困烦,迎接过低谷,成就过灿烂;2023年,太多的不平凡已渐行渐远;但愿2023年的你,付出终有回报,奋斗出现成果,理想成为现实,顺利常伴身前!

立即
投稿
发表
评论
返回
顶部