YAML语法
Admin
2018-09-25 12:42:29
其他
YAML是专门来写配置文件的语言,远比JSON要方便,正如YAML表示的YAML Ain't Markup Language。YAML是一种简洁的非标记语言,以数据为中心,使用空白、缩进、分行组织数据,从而表示的更加简洁易读。
官网地址:http://yaml.org/
一个在线演示站点:http://nodeca.github.io/js-yaml/
基本规则
大小写敏感
使用缩进表示层级关系
禁止tab缩进,只能使用空格键
缩进长度没有限制,只要元素对其就表示这些元素属于一个层级
使用#表示注释
字符串可以不用引号
数据结构
散列表(map或对象)
使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,如:
# YAML表示 age : 12 name : huang # 对应的Json表示 {'age':12,'name':'huang'}
也可以写成一行
# YAML表示 {age:12,name:huang} # 对应的Json表示 {'age':12,'name':'huang'}
数组(list)
使用连字符(-)表示,如:
# YAML表示 - a - b - 12 # 对应Json表示 ['a','b',12]
也可以写成一行
# YAML表示 [a,b,c] # 对应Json表示 [ 'a', 'b', 'c' ]
纯量(scalar)
数据最小的单位,不可以在分割,如:
字符串
布尔值
Null 用 ~ 表示
浮点数
强制转换类型
e: !!str 123 #整数转字符 f: !!str true #布尔值转字符
多行字符串可以使用|保留换行符,可以使用>折叠换行,如:
this: | Foo Bar that: > Foo Bar { this: 'Foo\nBar\n', that: 'Foo Bar\n' }
+表示保留文字块末尾的换行,-表示删除字符串末尾的换行,如:
s1: | Foo s2: |+ Foo s3: |- Foo { s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }
字符串之中可以插入HTML标记,如:
message: | <p style="color: red"> 段落 </p> { message: '\n<p style="color: red">\n 段落\n</p>\n' }
锚点&和别名*,可以用来引用,如:
defaults: &defaults adapter: postgres host: localhost development: database: myapp_development <<: *defaults test: database: myapp_test <<: *defaults
等同于,如:
defaults: adapter: postgres host: localhost development: database: myapp_development adapter: postgres host: localhost test: database: myapp_test adapter: postgres host: localhost
&用来建立锚点(defaults)<<表示合并到当前数据,*用来引用锚点,另一个例子:
- &showell Steve - Clark - Brian - Oren - *showell [ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]
数据嵌套
map和list的元素可以是另一个map或list或者是纯量,由此出现4种常见的嵌套:
map嵌套map
map嵌套list
list嵌套list
list嵌套map
举一个列子,list嵌套map,如:
# YAML表示 - id: 1 name: huang - id: 2 name: liao # 对应Json表示 [ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]