2018-05-04 YAML 語(yǔ)言教程

link:? ?http://www.ruanyifeng.com/blog/2016/07/yaml.html

一、簡(jiǎn)介

YAML 語(yǔ)言(發(fā)音 /?j?m?l/ )的設(shè)計(jì)目標(biāo)畔濒,就是方便人類讀寫剩晴。它實(shí)質(zhì)上是一種通用的數(shù)據(jù)串行化格式。

它的基本語(yǔ)法規(guī)則如下篓冲。

大小寫敏感

使用縮進(jìn)表示層級(jí)關(guān)系

縮進(jìn)時(shí)不允許使用Tab鍵李破,只允許使用空格。

縮進(jìn)的空格數(shù)目不重要壹将,只要相同層級(jí)的元素左側(cè)對(duì)齊即可

#表示注釋嗤攻,從這個(gè)字符一直到行尾,都會(huì)被解析器忽略诽俯。

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

對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)

數(shù)組:一組按次序排列的值暴区,又稱為序列(sequence) / 列表(list)

純量(scalars):?jiǎn)蝹€(gè)的闯团、不可再分的值

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

二仙粱、對(duì)象

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

animal:pets

轉(zhuǎn)為 JavaScript 如下伐割。

{animal:'pets'}

Yaml 也允許另一種寫法候味,將所有鍵值對(duì)寫成一個(gè)行內(nèi)對(duì)象。

hash:{name:Steve,foo:bar}

轉(zhuǎn)為 JavaScript 如下隔心。

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

三白群、數(shù)組

一組連詞線開頭的行,構(gòu)成一個(gè)數(shù)組硬霍。

-Cat

-Dog

-Goldfish

轉(zhuǎn)為 JavaScript 如下帜慢。

['Cat','Dog','Goldfish']

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

-

? -Cat

? -Dog

? -Goldfish

轉(zhuǎn)為 JavaScript 如下粱玲。

[['Cat','Dog','Goldfish']]

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

animal:[Cat,Dog]

轉(zhuǎn)為 JavaScript 如下拜轨。

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

四密幔、復(fù)合結(jié)構(gòu)

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

languages:

? -Ruby

? -Perl

? -Python?

websites:

? YAML:yaml.org??

? Ruby:ruby-lang.org??

? Python:python.org? Perl:use.perl.org

轉(zhuǎn)為 JavaScript 如下。

{languages:['Ruby','Perl','Python'],

websites:

{YAML:'yaml.org',

Ruby:'ruby-lang.org',

Python:'python.org',

Perl:'use.perl.org'}}

五、純量

純量是最基本的堪嫂、不可再分的值偎箫。以下數(shù)據(jù)類型都屬于 JavaScript 的純量。

字符串

布爾值

整數(shù)

浮點(diǎn)數(shù)

Null

時(shí)間

日期

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

number:12.30

轉(zhuǎn)為 JavaScript 如下淹办。

{number:12.30}

布爾值用true和false表示。

isSet:true

轉(zhuǎn)為 JavaScript 如下恶复。

{isSet:true}

null用~表示怜森。

parent:~

轉(zhuǎn)為 JavaScript 如下。

{parent:null}

時(shí)間采用 ISO8601 格式谤牡。

iso8601:2001-12-14t21:59:43.10-05:00

轉(zhuǎn)為 JavaScript 如下副硅。

{iso8601:newDate('2001-12-14t21:59:43.10-05:00')}

日期采用復(fù)合 iso8601 格式的年、月翅萤、日表示恐疲。

date:1976-07-31

轉(zhuǎn)為 JavaScript 如下。

{date:newDate('1976-07-31')}

YAML 允許使用兩個(gè)感嘆號(hào)套么,強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型培己。

e:!!str123

f:!!strtrue

轉(zhuǎn)為 JavaScript 如下。

{e:'123',f:'true'}

六胚泌、字符串

字符串是最常見(jiàn)省咨,也是最復(fù)雜的一種數(shù)據(jù)類型。

字符串默認(rèn)不使用引號(hào)表示玷室。

str:這是一行字符串

轉(zhuǎn)為 JavaScript 如下零蓉。

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

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

str:'內(nèi)容: 字符串'

轉(zhuǎn)為 JavaScript 如下壁公。

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

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

s1:'內(nèi)容\n字符串'

s2:"內(nèi)容\n字符串"

轉(zhuǎn)為 JavaScript 如下紊册。

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

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

str:'labor''s day'

轉(zhuǎn)為 JavaScript 如下囊陡。

{str:'labor\'s day'}

字符串可以寫成多行,從第二行開始掀亥,必須有一個(gè)單空格縮進(jìn)撞反。換行符會(huì)被轉(zhuǎn)為空格。

str:這是一段?

? 多行?

? 字符串

轉(zhuǎn)為 JavaScript 如下搪花。

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

多行字符串可以使用|保留換行符遏片,也可以使用>折疊換行嘹害。

this:|

? Foo?

? Bar

that:>

? Foo?

? Bar

轉(zhuǎn)為 JavaScript 代碼如下。

{this:'Foo\nBar\n',that:'Foo Bar\n'}

+表示保留文字塊末尾的換行吮便,-表示刪除字符串末尾的換行笔呀。

s1:|

Foo

s2:|+

Foos


3:|-

Foo

轉(zhuǎn)為 JavaScript 代碼如下。

{s1:'Foo\n',s2:'Foo\n\n\n',s3:'Foo'}

字符串之中可以插入 HTML 標(biāo)記髓需。

message:|

段落

轉(zhuǎn)為 JavaScript 如下许师。

{message:'\n

\n? 段落\n

\n'}

七、引用

錨點(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è)例子屋确。

-&showell Steve

-Clark

-Brian

-Oren

-*showell

轉(zhuǎn)為 JavaScript 代碼如下纳击。

['Steve','Clark','Brian','Oren','Steve']


工具:https://www.json2yaml.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市攻臀,隨后出現(xiàn)的幾起案子焕数,更是在濱河造成了極大的恐慌,老刑警劉巖刨啸,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堡赔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡设联,警方通過(guò)查閱死者的電腦和手機(jī)善已,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)离例,“玉大人换团,你說(shuō)我怎么就攤上這事」” “怎么了艘包?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)耀盗。 經(jīng)常有香客問(wèn)我想虎,道長(zhǎng),這世上最難降的妖魔是什么叛拷? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任舌厨,我火速辦了婚禮,結(jié)果婚禮上忿薇,老公的妹妹穿的比我還像新娘裙椭。我一直安慰自己躏哩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布揉燃。 她就那樣靜靜地躺著震庭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪你雌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天二汛,我揣著相機(jī)與錄音婿崭,去河邊找鬼肴颊。 笑死氓栈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婿着。 我是一名探鬼主播授瘦,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼竟宋!你這毒婦竟也來(lái)了提完?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丘侠,失蹤者是張志新(化名)和其女友劉穎徒欣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜗字,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡打肝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挪捕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粗梭。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖级零,靈堂內(nèi)的尸體忽然破棺而出断医,到底是詐尸還是另有隱情,我是刑警寧澤妄讯,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布孩锡,位于F島的核電站,受9級(jí)特大地震影響亥贸,放射性物質(zhì)發(fā)生泄漏躬窜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一炕置、第九天 我趴在偏房一處隱蔽的房頂上張望荣挨。 院中可真熱鬧男韧,春花似錦、人聲如沸默垄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)口锭。三九已至朦前,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹃操,已是汗流浹背韭寸。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荆隘,地道東北人恩伺。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像椰拒,于是被迫代替她去往敵國(guó)和親晶渠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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