YAML – 流样式
什么是 YAML?
YAML(YAML Ain’t Markup Language 的缩写)是一种轻量级的数据序列化格式。它最初是为了给 Ruby 应用程序提供一种更人性化的配置文件格式而开发的,但 YAML 是一种通用格式,现在被众多编程语言所支持。
与 XML 和 JSON 不同,YAML 的主要设计目标是可以被人类轻松地理解和编辑。它的语法最为简洁,不需要太多额外的标记符号,同时也有很好的可读性和可扩展性。
现在,YAML已经广泛应用于各种领域,如配置文件、数据存储、REST API 的交互等。
流样式
在 YAML 中,为了更加灵活地解析和表示数据,引入了多种写法方式,其中流样式就是其中之一。
流样式是一种直观、易读的表现方式,它可以让 YAML 数据的表现形式更加紧凑。流样式将 YAML 数据表示为一个序列的流,使用逗号分隔符来表示不同的元素,使用方括号([]
)表示序列,使用大括号({}
)表示映射。
下面是一个使用流样式的示例:
# 嵌套映射
- {name: John Smith, age: 25, address: {city: New York, state: NY}}
# 非嵌套映射
- name: John Smith, age: 25, address: {city: New York, state: NY}
# 明确键值对
- {name: John Smith, age: 25, city: New York, state: NY}
在这个示例中,我们可以看到使用流样式的优点:将嵌套映射和非嵌套映射都表示为相同的方式,容易理解和阅读。同时,使用明确的键值对表示方式,也让数据变得更加紧凑。
YAML 的数据类型
在 YAML 中,数据有三种类型:标量(Scalar)、序列(Sequence)和映射(Mapping)。其中,标量是指一般数据类型,例如字符串、数字、布尔值等;序列是指一组按照一定顺序排列的数据,使用中括号([]
)表示;映射是指一组由属性和值组成的数据,使用大括号({}
)表示。
YAML 的标量数据类型比 JSON 更加丰富,它可以表示日期、时间、正则表达式等数据类型,同时也支持使用 null
关键字表示空值。
下面是一个示例,展示了不同数据类型在 YAML 中的表达方式:
# 标量数据类型示例
name: John Smith
age: 25
isMarried: false
birthdate: 1980-01-01
regExp: /[A-Z]+/
# 序列数据类型示例
fruits:
- Apple
- Banana
- Pineapple
- Kiwi
# 映射数据类型示例
person:
name: John Smith
age: 25
address:
city: New York
state: NY
YAML 的注释
注释在 YAML 中的作用与其他编程语言中一样,用于解释代码和增加代码的可读性。在 YAML 中,注释可以出现在行的任意位置。注释以井号(#
)开头,后面跟随注释内容。
下面是一个使用注释的示例:
# Example YAML file
# Created: 2021-07-01
# Author: John Smith
person:
# Person name
name: John Smith
# Person age
age: 25
# Address information
address:
# City name
city: New York
# State name
state: NY
YAML 的引用
在 YAML 中,引用用于在后续部分引用先前定义的键值对、映射或序列。引用使用 &
符号表示,被引用的键值对、映射或序列使用 *
符号表示。
下面是一个使用引用的示例:
# 引用示例
person: &person
name: John Smith
age: 25
address:
<<: *person
city: New York
state: NY
在这个示例中,person
映射定义了一个名为 “John Smith” 的人,address
映射使用了 <<
符号从 person
映射继承了 name
和 age
属性,然后定义了自己的 city
和 state
属性。
YAML 的多行
YAML 中的多行用于表示比较大的、复杂的数据。YAML 支持两种不同的多行格式:折叠型和字面型。
折叠型多行使用 >
符号表示,它将多行文本折叠成一行,并忽略首尾空格、换行符:
# 折叠型多行示例
description: >
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Quisque nec ipsum vel urna aliquet vehicula.
Sed convallis elit eu lorem auctor, in varius odio faucibus.
字面型多行使用 |
符号表示,它以精确的方式展示多行文本,保留文本中的每一个换行符和空格符:
# 字面型多行示例
example: |
First line
Second line
Third line
结论
在本文中,我们介绍了 YAML 的流样式,这是一种更加紧凑、易读的数据表现方式。我们还介绍了 YAML 的数据类型、注释、引用和多行。这些特性和语法使得 YAML 成为一种非常灵活且易用的数据序列化格式,被广泛地应用在各类编程应用和系统中。