如果接觸過編程數據結構的,對這個上手賊快.
寫過json這些的...主要關注下縮進這些,理解下概念便可!
這裏只列出很是高頻且通用性高的使用姿式,個別騷姿式自行去提案瞭解!
javascript
值得一提的是:java
%YAML version
,能夠指定使用yaml的版本key
必須爲字符串#
行開頭到行尾爲註釋區域str
: 字符串int | float
: 整形及浮點型list(array)
: 能夠理解爲數組map(dict)
: 不一樣語言叫法不同, 字典算是比較通用的解釋null(~)
: 空值date
: iso-8601標準的日期格式%YAML 1.2
---
# 這是一條註釋,跟bash同樣,#號開頭
# 最多見的字符串聲明,默認會自帶單引號(會轉義)
text: 我是測試文本
text1: '我是測試文本1'
text2: '我會被轉義\n,由於單引號會對須要轉義的進行轉義'
text3: "雙引號則忽略須要轉義的,\n\t"
text4: "這是多行文本 換行的須要空格縮進, 你能夠試試"
# |後面能夠追加+(保留換行符,默認),-移除每行字符串末尾換行符
text5: | 這種多行文本可讀性比較強 相似數組,整齊排列 # 也支持+-,一樣是控制換行符 text6: > 這是摺疊換行的姿式 會在最後一行末尾保留換行符 試試不就知道了 # 空值,日期聲明 isEmpty: ~
isEmpty2: null
date: 2020-07-15
#一維數組的寫法(也能理解爲列表)
# 寫法一
language: ['c','c++']
# 寫法二
hight_language:
- 'python'
- 'java'
# 二維數組
# 寫法一
testNestedArr1:
- [1,2,3]
- [4,5,6]
# 寫法二, 依託縮進
testNestedArr2:
-
- Cat
- Dog
- Goldfish
# map的寫法,js中也能夠理解爲對象,也能理解爲一些語言的字典
# 寫法一
asiaHuman: {eye: 'black',skin: 'yellow'}
# 寫法二
europeHuman:
- eye: 'blue'
- skin: 'white'
# 數組對象寫法
arrayMap:
- key: 1
- {test: 'fsadfas'}
# 聲明錨點,這個能夠用來給其餘複用,有點相似繼承
# 採用&來聲明錨點
human: &base
foot: true
hand: true
head: true
body: true
# 錨點複用,用<<來聲明導入(合併到當前),*+錨點來肯定引用範圍
asiaMan: &asiaM
skin: 'yellow'
<<: *base
otherDesc:
- &inline {strong: True}
skill:
<<: *asiaM
<<: *inline
it: very good
# 類型強制轉換
# !!int # 整數類型
# !!float # 浮點類型
# !!bool # 布爾類型
# !!str # 字符串類型
# !!binary # 也是字符串類型
# !!timestamp # 日期時間類型
# !!null # 空值
# !!set # 集合
# !!omap,!!pairs # 鍵值列表或對象列表
# !!seq # 序列,也是列表
# !!map # 鍵值表
needStr: !!str '0.01'
needBoolean: !!bool 'false'
needBoolean2: !!bool 'True'
needSeq: !!seq [1,2,2,3]
needFloat: !!float '666.6'
# 關聯數組鍵,我在折騰k8s的過程看過這個寫法
# 特地去了解了下,他能夠組合多個key爲更復雜的key
? - key1
- key2
: - value1
- {value2: '3'}
...
---
# 在線編譯器是數據流編譯,不能多個文檔在線,這部分不能放進去(能夠獨立測試)
# 切割yaml文檔,該姿式在k8s的配置文件比較常見
# 以---(三橫線)開頭
# 以...結束爲一個yaml文檔
testNestedArr2:
-
- Cat
- Dog
- Goldfish
...
複製代碼
{ text: '我是測試文本',
text1: '我是測試文本1',
text2: '我會被轉義\\n,由於單引號會對須要轉義的進行轉義',
text3: '雙引號則忽略須要轉義的,\n\t',
text4: '這是多行文本 換行的須要空格縮進, 你能夠試試',
text5: '這種多行文本可讀性比較強\n相似數組,整齊排列\n\n# 也支持+-,一樣是控制換行符\n',
text6: '這是摺疊換行的姿式 會在最後一行末尾保留換行符 試試不就知道了\n',
isEmpty: null,
isEmpty2: null,
date: Wed Jul 15 2020 08:00:00 GMT+0800 (中國標準時間),
language: [ 'c', 'c++' ],
hight_language: [ 'python', 'java' ],
testNestedArr1: [ [ 1, 2, 3 ], [ 4, 5, 6 ] ],
testNestedArr2: [ [ 'Cat', 'Dog', 'Goldfish' ] ],
asiaHuman: { eye: 'black', skin: 'yellow' },
europeHuman: [ { eye: 'blue' }, { skin: 'white' } ],
arrayMap: [ { key: 1 }, { test: 'fsadfas' } ],
human: { foot: true, hand: true, head: true, body: true },
asiaMan: { skin: 'yellow', foot: true, hand: true, head: true, body: true },
otherDesc: [ { strong: true } ],
skill:
{ skin: 'yellow',
foot: true,
hand: true,
head: true,
body: true,
strong: true,
it: 'very good' },
needStr: '0.01',
needBoolean: false,
needBoolean2: true,
needSeq: [ 1, 2, 2, 3 ],
needFloat: 666.6,
'key1,key2': [ 'value1', { value2: '3' } ] }
複製代碼
基於JS-YARML : nodeca.github.io/js-yaml/
node
yaml一直在更新,包括更復雜的姿式
具體騷的程度看不一樣語言實現的支持程度!
有興趣的點擊下面的傳送門: yaml.org/
python
爲何會擼這個,主要整理後方便回顧..
有不對之處請留言,會及時修正,謝謝閱讀!c++