YAML是一种可读性好,用于表达数据序列化的语言。YAML的全名为YAML Ain't Markup Language。YAML常被用于应用程序的配置文件或者程序之间的数据交换。
从使用目的来看,YAML与XML、JSON十分相似,它们都独立于编程语言和平台。但是,YAML有诸多独特的优势。
小水滴还提供了在线YAML校验和格式化工具,欢迎使用。
YAML是使用空格符来表示缩进的。在YAML文档中,不能使用Tab键(制表符)表示缩进。每一级缩进并没有空格数目的要求,只需要同级的内容使用相同数目的空格即可。
YAML文档由对象(Object)、数组(Array)和标量(Scalar)三种数据结构组成。对象是一组键值对(Key/Value Pairs),类似于编程语言中的映射(Map)、哈希(Hash)或者字典(Dictionary)的概念。数组则是一组有序的值。而标量则是最小的、不可再分割的值。
对象是一组键值对,键与值由冒号分隔。例如:下面的例子展示的是一个简单的键值对,键的名称为name,值为littlewaterdrop。
name: littlewaterdrop
一般的,一个键值对单独放在一行中。在同一级别下的多个键值对需保持相同的缩进。YAML也支持多个键值对放在同一行,她们以逗号分隔。例如下面的两个例子是等效的。
course:
name: yaml语言
description: 介绍yaml语言的一门入门课。
course:
name: yaml语言, description: 介绍yaml语言的一门入门课。
在上例中,键的名称是course,值是一个对象,包含两个键值对。我们也可以把她们全部放在一行。因为course对应的值是一个对象,该对象需要放在{(左花括号)和}(右花括号)之中,以表示这个值是一个对象。
course: {name: yaml语言, description: 介绍yaml语言的一门入门课。}
在表示数组时,需要在每个元素之前使用连字符(-)。例如:
animals:
- Cat
- Dog
- Bird
YAML也支持将键和值(数组)放在同一行。例如:下面的例子与上面的例子是等效的。数组的元素是放在[(左方括号)和](右方括号)之中的。
animals: [Cat, Dog, Bird]
标量是YAML文档中的最小单元,不可再分。YAML的标量支持字符串、布尔值、整数、浮点数、null、日期和时间。其中,null用~表示。例如:下面的例子展示了各种类型标量的使用方法。
name: littlewaterdrop
integer: 10
number: 10.50
isValid: true
nullValue: ~
TimeInISOFormat: 2020-07-03t12:57:00.09-06:00
today: 2020-07-03
从上面的例子可以发现,YAML会自动检测值的类型。例如,在上例中,10会被自动地认为是一个整数。如果我们需要使用字符串"10"的话,可以将其放在单引号中。或者使用双惊叹号做强制类型转换。当使用单引号字符串,并且字符串的内容包含单引号时,可使用两个单引号作为单引号的转义字符(Escaped Character)。
tenInString: '10'
castToString: !!str 10
escapedSingleQuote: 'Adam''s book'
YAML支持单行注释。由#开始的一行会被YAML解释器忽略。YAML尚不支持多行注释。多行注释需以多个单行注释的形式出现。
# This is a single-line comment.
# This is a
# multi-line
# comment.
最后,我们给出一个完整的YAML语言的例子,帮助读者理解YAML的使用方法。
name: An YAML Demo
version: '1.0'
metadata:
author: Little Waterdrop
time: 2020-07-10
projects:
- name: module A
dependency: [dep-1, dep-2, dep-3]
build: succeeded
- name: module B
dependency:
- dep-4
- dep-5
build: failed
本章介绍了YAML的基础知识。因为YAML使用缩进表示文档结构,YAML文档非常轻便、易读、通用性好和扩展性好,因此,她被广泛的应用于系统配置和数据交换等应用场景。
注册用户登陆后可留言