YAML=YAML Ain't Markup Language,YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。多用于api接口的定义。
1、大小写敏感 2、使用缩进表示层级关系 3、禁止使用tab缩进,只能使用空格键 4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级 5、使用#表示注释 6、字符串可以不用引号标注
对象:键值对的集合,又称为映射(map)/ 哈希(hashes) / 字典(dictionary)
使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,示例: # YAML表示 age : 12 name : huang # 对应的Json表示 {'age':12,'name':'huang'}数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
使用连字符(-)表示: # YAML表示 - a - b - 12 # 对应Json表示 ['a','b',12]纯量(scalars):单个的、不可再分的值
2.map嵌套list
# YAML表示 languages: - Ruby - Perl - Python - c # 对应Json表示 { languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }3.list嵌套list
# YAML表示 - - Ruby - Perl - Python - - c - c++ - java # 对应Json表示 [ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]4.list 嵌套map
# YAML表示 - id: 1 name: huang - id: 2 name: liao # 对应Json表示 [ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]1.引号
单引号: 会将字符串里面的特殊字符转义为字符串处理
name: '123\n123' 输出: 123\n123双引号: 不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。
name: "123\n123" 输出: 123 换行 1232.文本块
|:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行
value: | hello world! 输出:hello 换行 world!+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
value: | hello value: |- hello value: |+ hello 输出:hello\n hello hello\n\n(有多少个回车就有多少个\n):使用 > 标注的文本内容缩进表示的块,将块中回车替换为空格,最终连接成一行
value: > hello world! 输出:hello 空格 world! 注意 “>” 与 文本之间的空格3.锚点与引用
使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)
name: &a yaml book: *a books: - java - *a - python 输出book: yaml 输出books:[java,yaml,python] 注意*引用部分不能追加内容4.存量,数据类型约定
1.字符串 使用”或”“或不使用引号 2.布尔值 true或false表示。 3.数字
12 #整数 014 # 八进制整数 0xC #十六进制整数 13.4 #浮点数 1.2e+34 #指数 .inf空值 #无穷大4.空值 null或~表示 5.日期 使用 iso-8601 标准表示日期
date: 2018-01-01t16:59:43.10-05:00 在springboot中yaml文件的时间格式 date: yyyy/MM/dd HH:mm:ss6.强制类型转换 YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。
money: !!str 123 date: !Boolean true 内置类型: !!int # 整数类型 !!float # 浮点类型 !!bool # 布尔类型 !!str # 字符串类型 !!binary # 也是字符串类型 !!timestamp # 日期时间类型 !!null # 空值 !!set # 集合 !!omap,!!pairs # 键值列表或对象列表 !!seq # 序列,也是列表 !!map # 键值表