基本语法特性

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进不允许使用tab,只允许使用空格

  • 缩进的空格数不重要,只要相同的层级的元素左对齐即可

  • #表示注释

数据类型

  • 对象:键值对的集合,又称为映射

  • 数组:一组按次序排列的值,又称为序列

  • 纯量:单个的、不可分割的值

YAML对象

对象表述方式:

key:{key1: value1, key2: value2, ...}

或者用缩进表示:

key: 

    child-key: value

    child-key2: value2

较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value:

?  
    - complexkey1
    - complexkey2
:
    - complexvalue1
    - complexvalue2

意思即对象的属性是一个数组 [complexkey1,complexkey2],对应的值也是一个数组 [complexvalue1,complexvalue2]

YAML数组

- 开头的行表示构成一个数组:

- A
- B
- C

数据结构的子成员是一个数组,则可以在该项下面缩进一个空格。

-
 - A
 - B
 - C

一个相对复杂的例子:

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

意思是 companies 属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成。

复合结构

数组和对象可以构成复合结构,例:

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org