YAML语法学习

1.简介

YAML=YAML Ain't Markup Language,YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。多用于api接口的定义。

2.基本规则

1、大小写敏感
2、使用缩进表示层级关系
3、禁止使用tab缩进,只能使用空格键
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级
5、使用#表示注释
6、字符串可以不用引号标注

3. YAML支持的数据结构

对象:键值对的集合,又称为映射(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):单个的、不可再分的值

4.数据的嵌套

  1. map嵌套map
# YAML表示
websites:
 YAML: yaml.org 
 Ruby: ruby-lang.org 
 Python: python.org 
 Perl: use.perl.org 
# 对应Json表示
{ websites: 
   { YAML: 'yaml.org',
     Ruby: 'ruby-lang.org',
     Python: 'python.org',
     Perl: 'use.perl.org' } }

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' } ]

5.其他

1.引号

单引号: 会将字符串里面的特殊字符转义为字符串处理

name: '123\n123'
输出: 123\n123

双引号: 不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。

name: "123\n123" 
输出: 123 换行 123
2.文本块

|:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行

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:ss

6.强制类型转换
YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。

money: !!str
123
date: !Boolean
true
内置类型:
!!int # 整数类型 
!!float # 浮点类型 
!!bool # 布尔类型 
!!str # 字符串类型 
!!binary # 也是字符串类型 
!!timestamp # 日期时间类型 
!!null # 空值 
!!set # 集合 
!!omap,!!pairs # 键值列表或对象列表
!!seq # 序列,也是列表 !!map # 键值表

你可能感兴趣的:(YAML语法学习)