1.簡介
YAML=YAML Ain't Markup Language境蜕,YAML 是一種簡潔的非標記語言。YAML以數(shù)據(jù)為中心汽馋,使用空白侮东,縮進,分行組織數(shù)據(jù)豹芯,從而使得表示更加簡潔易讀悄雅。多用于api接口的定義。
2.基本規(guī)則
1铁蹈、大小寫敏感
2宽闲、使用縮進表示層級關(guān)系
3、禁止使用tab縮進,只能使用空格鍵
4容诬、縮進長度沒有限制围辙,只要元素對齊就表示這些元素屬于一個層級
5、使用#表示注釋
6放案、字符串可以不用引號標注
3. YAML支持的數(shù)據(jù)結(jié)構(gòu)
對象:鍵值對的集合姚建,又稱為映射(map)/ 哈希(hashes) / 字典(dictionary)
使用冒號(:)表示鍵值對,同一縮進的所有鍵值對屬于一個map吱殉,示例:
# YAML表示
age : 12
name : huang
# 對應(yīng)的Json表示
{'age':12,'name':'huang'}
數(shù)組:一組按次序排列的值掸冤,又稱為序列(sequence) / 列表(list)
使用連字符(-)表示:
# YAML表示
- a
- b
- 12
# 對應(yīng)Json表示
['a','b',12]
純量(scalars):單個的、不可再分的值
4.數(shù)據(jù)的嵌套
- map嵌套map
# YAML表示
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
# 對應(yīng)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
# 對應(yīng)Json表示
{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }
3.list嵌套list
# YAML表示
-
- Ruby
- Perl
- Python
-
- c
- c++
- java
# 對應(yīng)Json表示
[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
4.list 嵌套map
# YAML表示
-
id: 1
name: huang
-
id: 2
name: liao
# 對應(yīng)Json表示
[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]
5.其他
1.引號
單引號: 會將字符串里面的特殊字符轉(zhuǎn)義為字符串處理
name: '123\n123'
輸出: 123\n123
雙引號: 不會轉(zhuǎn)義字符串里面的特殊字符友雳,特殊字符作為本身想表示的意思稿湿。
name: "123\n123"
輸出: 123 換行 123
2.文本塊
|:使用|標注的文本內(nèi)容縮進表示的塊,可以保留塊中已有的回車換行
value: |
hello
world!
輸出:hello 換行 world押赊!
+表示保留文字塊末尾的換行饺藤,-表示刪除字符串末尾的換行。
value: |
hello
value: |-
hello
value: |+
hello
輸出:hello\n hello hello\n\n(有多少個回車就有多少個\n)
:使用 > 標注的文本內(nèi)容縮進表示的塊流礁,將塊中回車替換為空格涕俗,最終連接成一行
value: > hello
world!
輸出:hello 空格 world!
注意 “>” 與 文本之間的空格
3.錨點與引用
使用 & 定義數(shù)據(jù)錨點(即要復(fù)制的數(shù)據(jù))神帅,使用 * 引用錨點數(shù)據(jù)(即數(shù)據(jù)的復(fù)制目的地)
name: &a yaml
book: *a
books:
- java
- *a
- python
輸出book: yaml
輸出books:[java,yaml,python]
注意*引用部分不能追加內(nèi)容
4.存量再姑,數(shù)據(jù)類型約定
1.字符串
使用”或”“或不使用引號
2.布爾值
true或false表示。
3.數(shù)字
12 #整數(shù)
014 # 八進制整數(shù)
0xC #十六進制整數(shù)
13.4 #浮點數(shù)
1.2e+34 #指數(shù)
.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.強制類型轉(zhuǎn)換
YAML 允許使用個感嘆號!找御,強制轉(zhuǎn)換數(shù)據(jù)類型元镀,單嘆號通常是自定義類型,雙嘆號是內(nèi)置類型霎桅。
money: !!str
123
date: !Boolean
true
內(nèi)置類型:
!!int # 整數(shù)類型
!!float # 浮點類型
!!bool # 布爾類型
!!str # 字符串類型
!!binary # 也是字符串類型
!!timestamp # 日期時間類型
!!null # 空值
!!set # 集合
!!omap,!!pairs # 鍵值列表或?qū)ο罅斜?!!seq # 序列栖疑,也是列表 !!map # 鍵值表