Yaml 速成查詢表

前言

如果接觸過編程數據結構的,對這個上手賊快.
寫過json這些的...主要關注下縮進這些,理解下概念便可!
這裏只列出很是高頻且通用性高的使用姿式,個別騷姿式自行去提案瞭解!
javascript

寫法及註釋

值得一提的是:java

  • 文件首行%YAML version ,能夠指定使用yaml的版本
  • 鍵值對的冒號必須跟隨空格纔是標準的寫法,否則會被當初一個字符串!
  • 大小寫敏感
  • 聲明的key必須爲字符串
  • 使用空格縮進(不容許tab)
  • #行開頭到行尾爲註釋區域
  • 值容許的類型有
    • 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++

相關文章
相關標籤/搜索