http://yaml.org/
YAML: YAML Ain't Markup Language What It Is: YAML is a human friendly data serialization standard for all programming languages.
YAML(Yet Another Markup Language)(發音 /ˈjæməl/ )
一種基於Unicode容易閱讀,容易和腳本語言交互的,用來表達資料序列的編程語言。
適應場景
- 腳本語言:由於實現簡單,解析成本很低,YAML 特別適合在腳本語言中使用
- 序列化: YAML是由宿主語言數據類型直轉,的比較適合做序列化。
- 配置文件:寫 YAML 要比寫 XML 快得多(無需關注標簽或引號),並且比 INI 文檔功能更強。由於兼容性問題,不同語言間的數據流轉建議不要用 YAML。
YAML 語法
- 使用空格 Space 縮進表示分層,不同層次之間的縮進可以使用不同的空格數目,但是同層元素一定左對齊,即前面空格數目相同(不能使用 Tab,各個系統 Tab對應的 Space 數目可能不同,導致層次混亂)
- ‘#’表示注釋,只能單行注釋,從#開始處到行尾
- 破折號后面跟一個空格(a dash and space)表示列表
- 用冒號和空格表示鍵值對 key: value
- 簡單數據(scalars,標量數據)可以不使用引號括起來,包括字符串數據。用單引號或者雙引號括起來的被當作字符串數據,在單引號或雙引號中使用C風格的轉義字符
- 大小寫敏感
- 使用縮進表示層級關系
- 縮進時不允許使用Tab鍵,只允許使用空格。
- 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
本文介紹 YAML 的語法,以 JS-YAML 的實現為例。你可以去在線 Demo 驗證下面的例子。
YAML 支持的數據結構有三種。
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):單個的、不可再分的值
以下分別介紹這三種數據結構。
三、數組
一組連詞線開頭的行,構成一個數組。
- Cat - Dog - Goldfish
轉為 JavaScript 如下。
[ 'Cat', 'Dog', 'Goldfish' ]
數據結構的子成員是一個數組,則可以在該項下面縮進一個空格。
- - Cat - Dog - Goldfish
轉為 JavaScript 如下。
[ [ 'Cat', 'Dog', 'Goldfish' ] ]
數組也可以采用行內表示法。
animal: [Cat, Dog]
轉為 JavaScript 如下。
{ animal: [ 'Cat', 'Dog' ] }
Mapping Scalars to Sequences 簡單數據列表鍵值對
american:
- Boston Red Sox
- Detroit Tigers
- New York Yankees
national:
- New York Mets
- Chicago Cubs
- Atlanta Braves
