参考文档:
yaml文件的 锚点& 与 引用*
Yaml语法使用
yml 或者 yaml 结尾的文件
1. 配置普通数据
-
语法:
key: value
-
实例代码
name: zhangsan
value 之前必须有一个空格
2. 配置对象数据
-
用缩进代表分级
-
key 前面的空格个数不限定,在 yml 语法中,相同缩进代表同一个级别
-
实例代码
person: name: haohao age: 31 addr: beijing #或者(不常用) person: {name: haohao,age: 31,addr: beijing}
3. 配置 Map 数据
map:
key1: value1
key2: value2
4. 配置数组数据 (List、Set)
-
代表一个数组元素- value 与
-
之间有一个空格
city:
- beijing
- tianjin
- chongqing
- shanghai
# 或者(不常用)
city: [beijing,tianjin,chongqing,shanghai]
当数组元素是对象的时候
student:
- name: tom
age: 18
addr: beijing
- name: lucy
age: 17
addr: tianjin
# 或者(不常用)
student: [{name: tom,age: 18,addr: beijing},{name: lucy,age: 17,addr: tianjin}]
5. 锚点
当 yml 文件中出现多个重复内容时,可以通过 锚点 & 与引用 * ,实现引用锚点处内容的功能,从而在修改时,只需要修改锚点处的内容,即可在所有引用处生效
& 设置锚点的名称,<<
表示“将给定的哈希合并到当前的哈希”, *
引用锚点的内容。
我们想实现
user:
host: 127.0.0.1
db: 8
book:
host: 127.0.0.1
db: 9
comment:
host: 127.0.0.1
db: 10
有以下两种优化方式
通过 <<
localhost: &localhost1
host: 127.0.0.1
user:
<<: *localhost1
db: 8
book:
<<: *localhost1
db: 9
comment:
<<: *localhost1
db: 10
不通过 <<
localhost:
host: &hostname 127.0.0.1
user:
host: *hostname
db: 8
book:
host: *hostname
db: 9
comment:
host: *hostname
db: 10
6. 复杂的键
问号+空格 表示复杂的键。当键是一个列表或键值表时,就需要使用本符号来标记
# 使用一个列表作为键
? [blue, reg, green]: Color
# 等价于
? - blue
- reg
- gree
: Color
7. 文本块
使用 “|” 和文本内容缩进表示的块:保留块中已有的回车换行。相当于段落块
yaml: |
JSON的语法其实是YAML的子集,大部分的JSON文件都可以被YAML的解释器解释。
如果你想更深入的学习YAML,我建议你去 http://www.yaml.org 看看
使用 “>” 和文本内容缩进表示的块:将块中回车替换为空格,最终连接成一行
# 可以使用空行来分段落
yaml: >
JSON的语法其实是YAML的子集,
大部分的JSON文件都可以被YAML的解释器解释。
使用定界符“”(双引号)、‘’(单引号)或回车表示的块:最终表示成一行
yaml: # 使用回车的多行,最终连接成一行。
JSON的语法其实是YAML的子集,
大部分的JSON文件都可以被YAML的解释器解释。
yaml: # 使用了双引号,双引号的好处是可以转义,即在里面可以使用特殊符号
"JSON的语法其实是YAML的子集,
大部分的JSON文件都可以被YAML的解释器解释。"
当数据中含有空格或任意特殊字符,需要使用引号来包裹任何包含冒号的哈希值,
foo: "somebody said I should put a colon here: so I did" # 然后这个冒号将会被结尾.
8. 类型
integer: 12345 # 整数标准形式
octal: 0o34 # 八进制表示,第二个是字母 o
hex: 0xFF # 十六进制表示
float: 1.23e+3 # 浮点数
fixed: 13.67 # 固定小数
minmin: -.inf # 表示负无穷
notNumber: .NaN # 无效数字
null: # 空值
boolean: [true, false] # 布尔值
string: ‘12345‘ # 字符串
date: 2015-08-23 # 日期
datetime: 2015-08-23T02:02:00.1z # 日期时间
iso8601: 2015-08-23t21:59:43.10-05:00 # iso8601 日期格式
spaced: 2015-08-23 21:59:43.10 -5 # ?
显式指定类型
“!”(叹号)显式指示类型,或自定义类型标识。单叹号通常是自定义类型,双叹号是内置类型,例如:
#下面是内置类型
!!int # 整数类型
!!float # 浮点类型
!!bool # 布尔类型
!!str # 字符串类型
!!binary # 也是字符串类型
!!timestamp # 日期时间类型
!!null # 空值
!!set # 集合
!!omap, !!pairs # 键值列表或对象列表
!!seq # 序列,也是列表
!!map # 键值表