yaml中允许表示三种格式,分别为常量值、对象和数组
例如:
其中#作为注释,yaml中只有行注释
基本格式要求:
1.大小写敏感;2.使用缩进代表层级关系;
3.缩进只能使用空格,不能使用tab键,不要求空格个数,只需要相同层级左对齐(一般2或4个空格)。
对象:
使用冒号代表,格式为key: value。冒号后要有一个空格:
可使用缩进表示层级关系:
yaml中还支持流式(flow)语法表示对象,比如上面例子可写为:
较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的key,配合一个冒号加一个空格代表一个value:
意思即对象的属性是一个数组[complexkey1, complexkey2],对应的值也是一个数组[complexvalue1, complexvalue2]
使用流式语法即为[complexkey1,complexkey2]:[complexvalue1,complexvalue2]
数组
使用一个短横线加一个空格表示一个数组项:
当然也可以有这样的写法:
可以简单的理解为[[java,LOL]]
一个相对复杂的例子:
意思是companies属性是一个数组,每一个数组元素又是由id、name、price三个属性构成;
使用流式语法表示为:
常量:
yaml中提供了多种常量结构,包括整数、浮点数、字符串、null、日期、布尔值、时间。
使用+代表时区
特殊符号
1. --- yaml可以在同一个文件中,使用---表示一个文档的开始:
代表定义了两个profile,一个是development,一个是production;也常使用---来分割不同的内容,比如记录日志:
2. ...和---配合使用,在一个配置文件中代表一个文件的结束:
相当于在一个yaml中连续写了两个yaml配置项
3. !!yaml中使用!!做类型强行转换:
相当于把数字和布尔值类型强转换为字符串
将数组解析为set集合,简单理解,转化的内容就是[{Mark McGwire: 65}, {Sammy Sosa: 63}, {Ken Griffy: 58}],去掉重复。
4. >在字符串中折叠换行, |保留换行,这两个符号是yaml中字符串经常使用的符号,比如:
那么,accomplishment的结果为:将换行符转化成了空格,需要主意的是,每行的文本钱一定要有一个空格
stats的结果是:
常见|符号多用于yaml中配置html片段:
5.引用。重复的内容在yaml中可以使用&符号来完成锚点定义,使用*来完成锚点引用,例如:
可以看到,在hr中,使用&SS为Sammy Sosa设置了一个锚点引用,名称为SS,在rbi中,使用*SS来引用锚点:
我们也可以这样定义:
注意:不能独立的定义锚点,比如不能直接这样写: &SS Sammy Sosa;另外,锚点能够定义更复杂的内容,比如:
那么hr相当于引用了default的数组,注意,hr: *default要写在同一行。
6.合并内容。主要和锚点配合使用,可以将一个锚点内容直接合并到一个对象中,例如:
在merge中定义了四个锚点,分别在sample中使用。
sample1中,<<: *CENTER意思是引用{x: 1, y:2},并且合并到sample1中,那么合并的结果为:sample1={r=10, y=2,x=1}
sample2中,<<: [*CENTER, *BIG]意思是联合引用{x:1, y:2}和{R: 10},并且合并到sample2中,那么结果为sample2={other=haha,x=1,y=2}
sample3中,引入了*CENTER,*BIG,还使用了r: 100覆盖了引入的r:10,所以sample3值为sample3={r=100, y=2, x=1}