-
大小写敏感,
-
字串不一定要用双引号标识,如果有空格或特殊字符,需要放在引号之中
-
使用缩进表示层级关系
-
缩进不允许使用Tab键,只允许使用空格。
-
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
-
# 表示注释,从这个字符一直到行尾,都会被解析器忽略。
-
在一个文件中,可同时包含多个文档,并用“---”分隔(三个横线),用“...”可以用来表示档案结尾, 对于网络传输或者流来说,作为明确结束的符号,有利于软件处理。(例如不需要知道流关闭就能知道文档结束)
YAML 数据结构
YAML 支持的数据结构有三种
-
对象:键值对的集合, 键值对用冒号 ":" 来分隔 ,冒号后面需有一个空格
-
数组:数组对象通过减号 "-" 来表示 ,减号后需有一个空格
-
纯量(scalars):单个的、不可再分的值,如字符串、数字、时间、日期、null(用~表示)
-
重复定义时,后定义的会覆盖前面定义的值
-
如果值为 int, float, bool等类型,解析后会转换为对应的类型
-
强制类型转换使用 两个!,如
!!str 12
house:
family:
name: doe
parents:
- john
- jane
children:
- pual
- mark
- simone
address:
number: 34
street: main street
city: nowhere
zipcode: 12345
num: 12.155
flag: true
who: ~
s1: !!str 123
s2: !!str true
key:value放置于{}中进行表示,例如:
address:
{number: 34, street: main street, city: nowhere, zipcode: 12345}
引用
锚点&
和别名*
,可以用来引用。
-
&
用来建立锚点,类似于声明变量 -
*
用来引用锚点,类似于引用变量 -
<<
表示合并到当前数据(如果变量名重复也会覆盖)
defaults: &defaults adapter: postgres host: localhost #development: # database: myapp_development # adapter: postgres # host: localhost development: database: myapp_development <<: *defaults test: database: myapp_test <<: *defaults