YAML基礎(chǔ)語(yǔ)法手冊(cè)以及和JSON的對(duì)照

k8s使用了YAML格式進(jìn)行容器編排,因此這里來(lái)詳細(xì)學(xué)習(xí)一下YAML文件的基本規(guī)則厢蒜。
本文介紹 YAML 的語(yǔ)法轻纪,可以使用在線網(wǎng)站進(jìn)行驗(yàn)證YAML驗(yàn)證

簡(jiǎn)介

它的基本語(yǔ)法規(guī)則:

  • 大小寫(xiě)敏感
  • 使用縮進(jìn)表示層級(jí)關(guān)系
  • 縮進(jìn)時(shí)不允許使用Tab鍵催植,只允許使用空格肮蛹。
  • 縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可
  • # 表示注釋?zhuān)瑥倪@個(gè)字符一直到行尾创南,都會(huì)被解析器忽略伦忠。

YAML 支持的數(shù)據(jù)結(jié)構(gòu)有三種:

  • 對(duì)象:鍵值對(duì)的集合,又稱(chēng)為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 數(shù)組:一組按次序排列的值稿辙,又稱(chēng)為序列(sequence) / 列表(list)
  • 純量(scalars):?jiǎn)蝹€(gè)的昆码、不可再分的值

以下分別介紹這三種數(shù)據(jù)結(jié)構(gòu)。

對(duì)象

對(duì)象的一組鍵值對(duì),使用冒號(hào)結(jié)構(gòu)表示赋咽。

YAML JSON
animal: pets { animal: 'pets' }

YAML也允許另一種寫(xiě)法旧噪,將所有鍵值對(duì)寫(xiě)成一個(gè)行內(nèi)對(duì)象。

YAML JSON
hash: { name: Steve, foo: bar } { hash: { name: 'Steve', foo: 'bar' } }

數(shù)組

一組連詞線開(kāi)頭的行冬耿,構(gòu)成一個(gè)數(shù)組舌菜。

YAML JSON
- Cat
- Dog
- Goldfish
[ 'Cat', 'Dog', 'Goldfish' ]

數(shù)據(jù)結(jié)構(gòu)的子成員是一個(gè)數(shù)組,則可以在該項(xiàng)下面縮進(jìn)一個(gè)空格亦镶。

YAML JSON
-
??- Cat
??- Dog
??- Goldfish
[ [ 'Cat', 'Dog', 'Goldfish' ] ]

數(shù)組也可以采用行內(nèi)表示法日月。

YAML JSON
animal: [Cat, Dog] { animal: [ 'Cat', 'Dog' ] }

純量

純量是最基本的、不可再分的值缤骨。

  • 整數(shù)
  • 浮點(diǎn)數(shù)
  • 布爾值
  • null
  • 字符串

數(shù)值直接以字面量的形式表示

YAML JSON
number: 12.30 { number: 12.30 }

最新標(biāo)準(zhǔn)里 y / Y / yes / Yes / YES / n / N / no / No / NO / true / True / TRUE / false / False / FALSE / on / On / ON / off / Off / OFF 全部都會(huì)被解析成正確的 bool 類(lèi)型爱咬,為了兼容性比較好建議用 true 和 false。

YAML JSON
isSet: true { isSet: true }

YAML 允許使用兩個(gè)感嘆號(hào)绊起,強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類(lèi)型精拟。

YAML JSON
e: !!str 123
f: !!str true
{ e: '123', f: 'true' }

~ / null / Null / NULL 還有空字符都被解析成 null 類(lèi)型,最標(biāo)準(zhǔn)的寫(xiě)法是 ~虱歪。

YAML JSON
e: ~ { e: null }

字符串

字符串是最常見(jiàn)蜂绎,也是最復(fù)雜的一種數(shù)據(jù)類(lèi)型。
字符串默認(rèn)不使用引號(hào)表示笋鄙。

YAML JSON
str: 這是一行字符串 { str: '這是一行字符串' }

如果字符串之中包含空格或特殊字符师枣,需要放在引號(hào)之中。

YAML JSON
str: '內(nèi)容: 字符串' { str: '內(nèi)容: 字符串' }

單引號(hào)和雙引號(hào)都可以使用萧落,雙引號(hào)不會(huì)對(duì)特殊字符轉(zhuǎn)義践美。

YAML JSON
s1: '內(nèi)容\n字符串'
s2: "內(nèi)容\n字符串"
{ s1: '內(nèi)容\\n字符串', s2: '內(nèi)容\n字符串' }

單引號(hào)之中如果還有單引號(hào),必須連續(xù)使用兩個(gè)單引號(hào)轉(zhuǎn)義找岖。

YAML JSON
str: 'labor''s day' { str: 'labor's day' }

字符串可以寫(xiě)成多行陨倡,從第二行開(kāi)始,必須有一個(gè)單空格縮進(jìn)许布。換行符會(huì)被轉(zhuǎn)為空格兴革。

YAML JSON
str: 這是一段
?多行
?字符串
{ str: '這是一段 多行 字符串' }

多行字符串可以使用|保留換行符,也可以使用>折疊換行蜜唾。

YAML JSON
this:|
?Foo
?Bar
that: >
?Foo
?Bar
this:
'Foo\nBar\n', that: 'Foo Bar\n' }

+表示保留文字塊末尾的換行帖旨,-表示刪除字符串末尾的換行。

YAML JSON
s1:|
?Foo

s2:|+
?Foo


s3:|-
?Foo
{ s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }

復(fù)合結(jié)構(gòu)

對(duì)象和數(shù)組可以結(jié)合使用灵妨,形成復(fù)合結(jié)構(gòu)解阅。

YAML JSON
languages:
- Ruby
- Perl
- Python
websites:
??YAML: yaml.org
??Ruby: ruby-lang.org
??Python: python.org
??Perl: se.perl.org
{ languages: [ 'Ruby', 'Perl', 'Python' ],
??websites:
?? { YAML: 'yaml.org',
???? Ruby: 'ruby-lang.org',
?????Python: 'python.org',
???? Perl: 'use.perl.org' } }

引用

錨點(diǎn)&和別名*友扰,可以用來(lái)引用管引。

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

等同于下面的代碼。

defaults:
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  adapter:  postgres
  host:     localhost

test:
  database: myapp_test
  adapter:  postgres
  host:     localhost

&用來(lái)建立錨點(diǎn)(defaults)蒲跨,<<表示合并到當(dāng)前數(shù)據(jù),*用來(lái)引用錨點(diǎn)蟹地。

下面是另一個(gè)例子积暖。

YAML JSON
- &showell Steve
- Clark
- Brian
- Oren
- *showell
[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怪与,隨后出現(xiàn)的幾起案子夺刑,更是在濱河造成了極大的恐慌,老刑警劉巖分别,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遍愿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡耘斩,警方通過(guò)查閱死者的電腦和手機(jī)沼填,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)括授,“玉大人坞笙,你說(shuō)我怎么就攤上這事〖孕椋” “怎么了薛夜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)版述。 經(jīng)常有香客問(wèn)我却邓,道長(zhǎng),這世上最難降的妖魔是什么院水? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮简十,結(jié)果婚禮上檬某,老公的妹妹穿的比我還像新娘。我一直安慰自己螟蝙,他們只是感情好恢恼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胰默,像睡著了一般场斑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牵署,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天漏隐,我揣著相機(jī)與錄音,去河邊找鬼奴迅。 笑死青责,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脖隶,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扁耐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了产阱?” 一聲冷哼從身側(cè)響起婉称,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎构蹬,沒(méi)想到半個(gè)月后王暗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怎燥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年瘫筐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐姚。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡策肝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出隐绵,到底是詐尸還是另有隱情之众,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布依许,位于F島的核電站棺禾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏峭跳。R本人自食惡果不足惜膘婶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛀醉。 院中可真熱鬧悬襟,春花似錦、人聲如沸拯刁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垛玻。三九已至割捅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帚桩,已是汗流浹背亿驾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留账嚎,地道東北人颊乘。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓参淹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乏悄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浙值,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 聲明: 原文鏈接地址: http://www.ruanyifeng.com/blog/2016/07/yaml.h...
    Michael_林閱讀 7,711評(píng)論 0 3
  • yaml 語(yǔ)言 語(yǔ)法規(guī)則:1.大小寫(xiě)敏感2.使用縮進(jìn)表示 層級(jí)關(guān)系3.縮進(jìn)時(shí)不允許使用 tab鍵,只允許使用空格...
    Helen_Cat閱讀 1,799評(píng)論 0 0
  • link: http://www.ruanyifeng.com/blog/2016/07/yaml.html 一檩小、...
    Janny_lwj閱讀 125評(píng)論 1 0
  • 一开呐、YML是什么 YAML (YAML Aint Markup Language)是一種標(biāo)記語(yǔ)言,通常以.yml為...
    xlystar閱讀 2,118評(píng)論 0 1
  • 昨天給大家來(lái)了一部高智商规求,而且特別燒腦的電影筐付,就連院長(zhǎng)看了很久也沒(méi)能看懂什么意思。這些劇都比較長(zhǎng)阻肿,但值得花時(shí)間去細(xì)...
    女生動(dòng)漫閱讀 31,182評(píng)論 0 6