什麼是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