什么是YAML
YAML是一种数据序列化语言,通常用于编写配置文件。根据你问的人,YAML代表另一种标记语言或YAML不是标记语言(一个递归的缩写),它强调YAML是用于数据而不是文档。YAML是一种流行的编程语言,因为它是人类可读的,易于理解。它还可以与其他编程语言结合使用。由于YAML的灵活性和可访问性,YAML被Ansible自动化工具用来创建自动化流程,以Ansible Playbooks的形式。
------Red Hat 官网
简而言之,YAML与XML、JSON类似,他们三者的一个共同的作用----进行数据传输,简化数据表现形式,使传输过来的数据,更适合人类阅读,更易于人们理解。
YAML初体验
下面是在SpringBoot工程中,采用YAML进行相关数据配置的截图:
如果,用传统的properties文件进行配置的话,那将会是这样:
显然,采用YAML进行配置的文件,在数据显示方面,层次更清晰,显示更加规范整洁,而传统的properties配置,则阅读起来会感觉有点吃力,
而且随着配置数据的量的不断增大,后者在数据阅读方面会越发让人感觉不舒服,甚至非常痛苦。
上面说了这么多,不言而喻,YAML无疑是配置数据文件的首选数据语言之一,那么问题来了,我们该如何利用YAML语言编写数据配置文件呢?
YAML的基本数据形式
数组:
fruits: - apple - banana - lemon - watermelon
注:
数组中对应的子项,都要以
- itemValue
的形式,以数值方向顺次写下,注意 - 与 itemValue 之间有个空格
Map:
classmates: class1: name1: Dage name2: LiHua name3: XiaoMing class2: name1: IU name2: JuJingyi
与数组大致相同,只不过是在 - 的地方换成相应 keyValue值,注意 处于同一级的map中的子项key值必须保证唯一性。
同样的,: 与value值之间有个空格。
对象
singer: name: CaiXukun nickname: kun fans: ikun age: 24 sex: male
写法与JSON类似
基本数据类型的映射
诸如String,int,double,float,long,char等基本数据类型,value表现形式均与JSON中一致:
string1: Hello YAML string2: "Hello YAML" string3: 'Hello YAML' integer: 666 double: 8.8 character: a boolean: true
注意:
字符串形式,可以不带“ ”,也可以带“ ”或‘ ’
: 与value值之间同样存在一个空格
其他用法
注释
#这是一个单行注释 #很不幸的是,YAML不支持多行注释。。。 #你只能向我这样,给每行加个 # 以看作多行注释
补充
~ 相当于NULL
singer: name: CaiXukun anti-fan: ~ fan: all
引用
ikun: &ikun #使用&锚住可能会被引用的数据块 - name1: ichen - name2: itom - name3: zhuozhuo singer: name: CaiXukun nickname: kun <<: *ikun # 注意此种引用方式key值只能为<< #上述singer转化为: singer: name: CaiXukun nickname: kun ikun: - name1: ichen - name2: itom - name3: zhuozhuo