很多从事Spring的同学,没少花韶光在写XML文件上吧?
不过随着韶光推移,XML的大哥大地位越来愈多收到了寻衅。
这不,除了JSON,又冒出来一个YAML。到底YAML是个怎么回事?看看下面的文章,小伙伴们就明白了。

YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。
YAML参考了其他多种措辞,包括:C措辞、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中得到灵感。
Clark Evans(某软件行业大牛)在2001岁首年月次揭橥了这种措辞。当前已经有数种编程措辞或脚本措辞支持(或者说解析)这种措辞。
YAML的语法和其他高等措辞类似,并且可以大略表达清单、散列表,标量等数据形态。
YAML利用空缺符号缩进和大量依赖外不雅观的特色,特殊适宜用来表达或编辑数据构造、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常靠近)。
来看个YAML的例子John.yaml:
name: John Smith
age: 35
Wife:
name: Jane Smith
age: 33
children:
- name: Kate Smith
age: 10
- name: Daniel Smith
age 8
是不是很好理解?
一个人叫John Smith,35了(他居然35了?!
他在哪里事情吖?)他夫人叫Jane Smith,比他小两岁。
John俩孩子,10岁的女儿和8岁的儿子。
纵然不懂开拓的人,是不是也能一眼看懂?!
目前,市情上常见的开拓措辞:JAVA、Python、Golang、PHP、C/C++都支持YAML。
YAML灰常适宜用来表达层次构造式(hierarchical model)的数据构造,而且还有精细的语法可以表示关系性(relational model)的数据。
上面的例子,也能看出YAML的一个显著特点:多行缩进
数据构造可以用类似大纲的缩排办法呈现,构造通过缩进来表示,连续的项目通过减号“-”来表示,map构造里面的key/value对用冒号“:”来分隔。
下面大略从研发角度描述一下YAML:
1.YAML语法
• 大小写敏感
• 利用缩进表示层级关系
• 缩进时不许可利用Tab键,只许可利用空格。
• 缩进的空格数目不主要,只要相同层级的元素左侧对齐即可
2.支持的基本数据构造
• 工具:键值对的凑集,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
• 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
• 纯量(scalars):单个的、不可再分的值
2.1 工具:
YAML工具,是一组键值对,利用冒号构造表示。
例如:Name:John
Yaml 大概可另一种写法,将所有键值对写成一个行内工具。
例如:Person: { FirstName: John, LastName: Does}
2.2 数组:
YAML中,一组连词线开头的行,构成一个数组。
例如:
- John
- Richard
- Steve
YAML中,数据构造的子成员是一个数组,则可以在该项下面缩进一个空格。
例如:
-
- John
- Richard
- Steve
YAML的数组也可以采取行内表示法。
例如:people: [John, Richard]
2.3 纯量:
YAML中纯量是最基本的、不可再分的值。以下数据类型都属于 JavaScript 的纯量。
• 字符串
• 布尔值
• 整数
• 浮点数
• Null
• 韶光
• 日期
3.不得不说的字符串
字符串是各种开拓措辞里最常见,也是比较繁芜的一种数据类型。
YAML中,字符串默认不该用引号表示。
例如:Name:JohnDoe
繁芜点儿的,YAML字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。
例如:
introduction: John
Doe
Chinese
转换成JavaScript,变这样:
{ introduction: 'John Doe Chinese' }
再繁芜点儿的,YAML中多行字符串可以利用 | 保留换行符,也可以利用 > 折叠换行。
例如:
husband: |
John
Smith
wife: >
Jenny
Smith
转为 JavaScript 代码如下。
{ this: 'John Smith ', that: 'Jenny Smith ' }
多数情形下:以上内容搪塞日常事情、口试足够了。
以下内容供学有余力的同学参考:
4.一个高等用法
YAML中,锚点 & 和别名 ,可以用来引用。
举个例子:
defaults: &defaults
database: postgres
host: localhost
development:
database: our_development
<<: defaults
test:
database: our_test
<<: defaults
等同于下面的代码:
defaults:
database: postgres
host: localhost
development:
database: our_development
database: postgres
host: localhost
test:
database: our_test
database: postgres
host: localhost
&用来建立锚点(defaults),<<表示合并到当前数据,用来引用锚点。
关于YAML,本日就先容这么多,同学们想要更多理解YAML,可以关注官网:https://yaml.org/
作 者:Testfan Arthur
出 处:微信"大众号:自动化软件测试平台
版权解释:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接