什麼是YAML
YAML是YAML Ain't Markup Language的遞迴縮寫(一種來自Opensource界的奇怪幽默,如果你懂,你就...)。顧名思義,它設計的目的是作為表達、傳遞資料的一種資料描述方式(data serialization language)。與XML或類似的用途的語言相比,它著重於資料於人們的可(易)閱度讀性。例如,以下兩個YAML的例子:
--- # 最喜愛的電影 - Casablanca - North by Northwest - Notorious
- name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288
YAML的語法
YAML結構乍看之下有點鬆散,因為它本身的語法結構主要是依賴階層及縮排(空白字元,非Tab),這點與Python有點類似。 文件的開頭與結束
YAML以「---」來表示一份文件的開始,以「...」表示文件的結束。
--- time: 20:03:20 player: Sammy Sosa action: strike (miss) ... --- time: 20:03:47 player: Sammy Sosa action: grand slam ...註解
以「#」起頭的文字代表註解,於資料中不具意義。
# This stream contains no # documents, only comments.
hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In字串
YAML中字串有三種表示法,可以選擇直接表示或是加上引號(單引號或雙引號)。如果字串中有脫逸字元(escape sequences)就必須使用雙引號;單引號則可以使用於其他場合(不需要脫逸字元時)。
plain: This unquoted scalar single: '"Howdy!" he cried.' double: "And, this double-quoted scalar.\n"整數
a: 123 # 整數
布林值
b: [ true, True, TRUE, false, False, FALSE ] # 布林值
浮點數
c: 123.0 # 浮點數
陣列(集合)
陣列有兩種表示法。一種是區塊格式(block format);另一種則是內置格式(inline format)。
區塊格式法中,各陣列元素以「- 」(減號加空白)起始。
--- # 最喜愛的電影 - Casablanca - North by Northwest - Notorious內置格式,就如同JSON或Javascript的陣列表示法,各元素位於方括弧中([ ]),並以「, 」區隔。
--- # 購物清單 [milk, pumpkin pie, eggs, juice]雜湊表(結構)
雜湊表由「鍵」(key)加「值」(value)構成。中間以「: 」隔開。
--- # 區塊形式
name: John Smith
age: 33
--- # 內置形式
{name: John Smith, age: 33}
於集合中使用雜湊表- {name: John Smith, age: 33}
- name: Mary Smith
age: 27
於雜湊表中使用集合men: [John Smith, Bill Jones] women: - Mary Smith - Susan Williams縮排
與Python相同,在YAML中為了表達階層而縮排用的空白字元數目並無限定,只要相同階層的元素左側對齊就可以了(但不能使用TAB字元)。
---
step:
instrument: Lasik 2000
pulseEnergy: 5.4
pulseDuration: 12
repetition: 1000
spotSize: 1mm
bill-to: &id001
street: 123 Tornado Alley Suite 16
city: East Westville
state: KS
完整的範例
---
invoice: 34843
date : 2001-01-23
bill-to: &id001
given : Chris
family : Dumars
address:
lines: |
458 Walkman Dr.
Suite #292
city : Royal Oak
state : MI
postal : 48046
ship-to: *id001
product:
- sku : BL394D
quantity : 4
description : Basketball
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
tax : 251.42
total: 4443.52
comments:
Late afternoon is best.
Backup contact is Nancy
Billsmer @ 338-4338.
No comments:
Post a Comment