YAML基础知识

 

语法

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用tab键,只允许使用空格。空格的数量不重要,只需要保证同级元素左对齐
  4. # 表示 行 注释

数据结构

  1. 对象:键值对的集合。又被称为 映射/哈希/字典
  2. 数组:一组按次序排列的值。又称为序列/列表
  3. 纯量(scalars):单个的不可再分的值。

对象

对象的一组键值对,使用冒号结构表示,冒号后面一定要有一个空格

# 相当于 {'animals': 'pets'}
animals: pets
# 相当于 {'hash': {'name': steve, 'age': '18'}}
hash: {name: steve, age: 18}

数组

一组连线词开头的行,够成一个数组。连线词后面一定要有一个空格

# 一个层级。相当于 ['cat', 'dog', 'goldfish']
- cat
- dog
- goldfish
# 两个层级。相当于 [['cat', 'dog', 'goldfish']] 嵌套了!!!
- 
  - cat
  - dog
  - goldfish
# 行内表示法。相当于 {'animals': ['cat', 'dog']}
animals: ['cat', 'dog']

对象和数组构成的复合结构的例子

languages:
  - Ruby
  - Perl
  - Python
websites:
  YAML: yaml.org
  Ruby: ruby-lang.org
  Python: python.org
  Perl: use.perl.org
# 相当于:
# {'languages': ['Ruby', 'Perl', 'Python'], 
#  'websites': {
#								'YAML': 'yaml.org',
#								'Ruby': 'ruby-lang.org',
#								'Python': 'python.org',
#								'Perl': 'use.perl.org',
#								}
#	}

纯量

字符串

布尔值

整数

浮点数

Null

时间

日期

  1. 字符串可以直接输入,但是在包含 冒号 空格等特殊字符时,可以使用
    1. 单引号:会转义特殊字符如 \n \t
    2. 双引号:不会转义特殊字符
  2. 布尔值用 true 和 false
  3. null 用 ~ 表示
  4. 时间采用 ISO8601 格式 time: 2001-12-24t21:59:43.10-05:00
  5. 日期采用ISO8601格式 date: 1976-07-31

引用

  1. & 用于建立锚点
  2. << 表示合并到当前数据
  3. * 用于引用锚点
defaults: &defaults
  adapter: postgres
  host: localhost
development:
  database: myAPP_development
  <<: *defaults
  
# 上面的例子等同于: 注意只是将锚点内的数据插入到当前数据!!!不会将锚点整个挪过来
defaults: &defaults
  adapter: postgres
  host: localhost
development:
  database: myAPP_development
  adapter: postgres
  host: localhost

YAML解析

请参看这篇文档

参考资料

  1. 原博主整理的实在是太好了,可惜链接失效了,只能贴上这种整合网站