一、前期概要
YAML 是一种简洁的非标记语言(YAML Ain’t Markup Language),YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读, 常用于作为配置文件, 比json更加简洁。
数据类型
- 字面量:不可再分的值(基本类型)
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
对象和数组可以任意嵌套组复杂的数据结构
适用范围
- 由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是脚本语言.
- YAML比较适合做序列化。因为它是宿主语言数据类型直转的,由于兼容性问题,不同语言间的数据流转建议现在不要用YAML.
- YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。对ROR而言,这很自然,也很省事.
二、语法与基本规则
基本语法
key:value
基本语法规则
- 大小写敏感
- 使用缩进表示层级关系,同层元素左侧对齐
- 禁止使用tab缩进,只能使用空格键
- 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
- 使用#表示注释
- 字符串可以不用引号标注 ,但必要的时候可以用引号
- 使用双引号表示字串时,可用倒斜线(\)进行特殊字符转义
三、基本类型(字面量)
常用的基本类型
类型 | 说明 |
---|---|
字符串 | str: "字符串" 或者 str: '字符串' 或者 str: 字符串 |
布尔值 | bool: true 或者bool: true |
整数 | number: 100 |
浮点数 | float: 3.14 |
Null | msg: ~ |
时间 | date: 2019-08-23T02:02:00.1z |
日期 | date: 2020-11-22 |
字符串
说明
使用单引号''或双引好""或不使用引号
栗子
name: 'wener'
email: 123456@qq.com
msg: '转义\n字符串'
dec: "不转义转义\n字符串"
注意事项
- 双引号不会对特殊字符转义
- 单引号会转义特殊字符
四、数组
说明
用- 值表示数组中的一个元素
栗子
languages:
- JAVA
- JavaScript
- SQL
五、对象
说明
在下一行来写对象的属性和值的关系 ;注意缩进
栗子
user:
name: 压妹儿
age: 18
activate: false
birth: 2000-12-12
address:
- 上海
- 广州
- 武汉
# 行内写法(不推荐)
details: {phone: "110",head:/img/default.png}
网友评论