基本介绍
YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。
YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名
说的简介一点yaml就是以数据为中心的一种标记语言,经常用于配置文件的使用,例如springboot中的application.yaml就用于配置文件
基本语法
- 形式为 key: value;注意:后面有空格
- 区分大小写
- 使用缩进表示层级关系
- 缩进不允许使用 tab,只允许空格 [有些地方也识别 tab , 推荐使用空格]
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- 字符串无需加引号
- yaml 中, 注释使用 #
数据类型
- 字面量:单个的、不可再分的值。date、boolean、string、number、null,写法如下
name: 汤姆
age: 18
isMarried: false
- 对象:键值对的集合, 比如 map、hash、set、object,写法如下
# 对象类型的写法有2种,分为行内写法和换行写法
# 行内写法使用{}进行标识,然后用,分隔每一项
car: {name: 保时捷, price:1234567.8}
# 换行写法,每一项就是kv进行表示
car:
name: 保时捷
price: 1234567.8
3.数组:一组按次序排列的值, 比如 array、list、queue等,写法如下
# 数组类型的写法也有2种,也是分为行内写法和换行写法
# 行内写法就是用[]进行标识,中间每个值使用,进行分隔
hobby: [篮球,羽毛球,乒乓球]
# 换行写法使用-标识每一项
hobby:
- 篮球
- 羽毛球
- 乒乓球
实例运用
下面是我创建的一个User类和Car类
然后我们在application.yaml中填充User中的值
user:
name: 汤姆
age: 18
# hobby: [篮球,羽毛球,乒乓球]
hobby:
- 篮球
- 羽毛球
- 乒乓球
# friends: { k1: 杰瑞,k2: 旺财 }
friends:
k1: 杰瑞
k2: 旺财
# car: {name: 保时捷, price:1234567.8}
car:
name: 保时捷
price: 1234567.8
创建一个Controller进行访问,返回User,查看是否可以成功使用
下面启动项目,使用postman进行测试
可以发现我们可以成功进行绑定,yaml的语法就没有问题
细节说明
1.如 果我们同时使用 application.properties 和 application.yml 作为配置文件,而2个文件又有 相 同 的 前 缀 值 绑 定 ,则application.properties 优先级高, 开发时,应当避免
2.字符串不需要引号,如果加上引号也不影响,'和"都不影响
3. 一定要记得在:后面有一个空格
总结
如果学过JavaScript或者json,那么yaml的语法应该是十分简单的,基本没什么变化,自己写几遍就会了,yaml在springboot中作为配置文件我感觉比properties好用很多,熟练掌握是必要的。对于yaml中的嵌套,根据语法进行类推就行了,就不再赘述了。