一、YAML简介
YAML是一种人性化、跨语言、基于Unicode的数据序列化语言,YAML是“ YAML Ain’t a Markup Language ” 的递归缩写,YAML不是一种标记语言,读音“ 雅梅尔”。
二、YAML的优点(特性)
YAML的数据结构清晰,易于阅读。
YAML是跨语言的,它的数据在编程语言之间可移植。
YAML符合敏捷语言的数据结构。
YAML支持一次性操作。
YAML表现力强,扩展性好。
YAML易于实现。
三、YAML与其他语言的关系
与JSON的关系
共同点:
JSON和YAML都是易于阅读的数据格式。
不同点:
JSON的设计目标是简单和通用,而YAML的设计主要在于易于阅读和支持任何复杂数据结构。
YAML可看作JSON的自然超集,提供更好的可读性和完整的信息模型。
每一个JSON文件都是一个有效的YAML文件,JSON迁移向YAML是很容易的事。
与XML的关系
YAML和XML没有直接相关性。YAML是一种数据序列化语言。XML是一种向后兼容的通用标记语言(SGML)。XML有设计约束,而YAML没有。
四、YAML语法
基本规则
YAML区分大小写
使用缩进表示层级关系
缩进使用空格,不能使用TAB(同层级左对齐即可,不要求空格数,一般用2或4个空格)
使用#号表示注释(YAML只有行注释)
数据结构
字典:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 对象
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量:单个的、不可再分的值,即基本数据类型
注意:重复定义时,后面的值会覆盖前面的值;值为 int, float, bool等类型,解析后会转换为对应的类型
字典
key: value
缩进表层级关系
key:
child-key1: child-value1
child-key2: child-value2
缩进只能用空格,不能用TAB键
上面的用流式写法表示:
key: {child-key1: child-value1, child-key2, child-value2}
数组郑州人流多少钱 http://www.hnmt120.com/
language :
- Java
- Python
- Golang
等价于 {‘language’ : [‘Java’, ‘Python’, ‘Golang’]}
server :
-
host : 127.0.0.1
port : 80
-
host : 127.0.0.1
port : 8081
流式写法 server : [{‘host’ : ‘127.0.0.1’, ‘port’ : ‘80’ } , {‘host’ : ‘127.0.0.1’, ‘port’ : ‘80’ } ]
-
- Java
- Python
- Golang
等价于 [[‘Java’, ‘Python’, ‘Golang’]]
?
- complexkey1
- complexkey2
:
- complexvalue1
- complexvalue2
等价于 {[complexkey1, complexkey2] : [complexvalue1, complexkey2]}
纯量
纯量,也就是常量吧,整数,浮点数,字符串,NULL,日期,布尔,时间。以下用一个例子演示
int:
- 333
- 0b1010_0111_0100_1010_1110 # 二进制表示
float:
- 3.14
- 6.8523015e+5 # 科学计数法表示
string:
- 'bcat' # 双引号转译 单引号不转译 下面是多种字符串换行写法
- line
newline # 换行连接处会转译成一个空格
- |
line # 换行处会有 \n 换行符
newline
- >
line # 字符串结尾会有 \n 换行符
newline
- "line\ # 换行处无空格 无 \n 换行符
newline"
null:
- username : 'bcat'
- ~ # ~ 表示null
date:
- 2019-12-17 # 日期必须使用 ISO 8601格式 即 yyyy-MM-dd格式
datetime:
- 2019-12-17T16:15:31+08:00 #时间使用ISO 8601格式 时间日期之间用T连接 时间时区之间用+分隔其他特殊符号
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。