數(shù)據(jù)序列化語(yǔ)言 YAML 使用入門
什么是 YAML,為什么我們現(xiàn)在應(yīng)該開始使用它?
YAML(YAML 不是標(biāo)記語(yǔ)言)是一種適宜閱讀理解的數(shù)據(jù)序列化語(yǔ)言。它的語(yǔ)法簡(jiǎn)單而易于閱讀。它不包含引號(hào)、打開和關(guān)閉的標(biāo)簽或大括號(hào)。它不包含任何可能使人類難以解析嵌套規(guī)則的東西。你可以看一下你的 YAML 文檔就知道它在什么。
YAML 特性
YAML 有一些超級(jí)特性,使其優(yōu)于其他序列化格式:
- 易于略讀。
- 易于使用。
- 可在編程語(yǔ)言之間移植。
- 敏捷語(yǔ)言的原生數(shù)據(jù)結(jié)構(gòu)。
- 支持通用工具的一致模型。
- 支持一次性處理。
- 表現(xiàn)力和可擴(kuò)展性。
我將通過一些例子進(jìn)一步向你展示 YAML 的強(qiáng)大。
你能弄清楚下面發(fā)生了什么嗎?
-------
# My grocery list
groceries:
- Milk
- Eggs
- Bread
- Butter
...
上面的例子包含了一個(gè)簡(jiǎn)單的雜貨購(gòu)物清單,它是一個(gè)完全格式化的 YAML 文檔。在 YAML 中,字符串不加引號(hào),而列表需要簡(jiǎn)單的連字符和空格。一個(gè) YAML 文檔以 ---
開始,以 ...
結(jié)束,但它們是可選的。YAML中的注釋以 #
開始。
縮進(jìn)是 YAML 的關(guān)鍵??s進(jìn)必須包含空格,而不是制表符。雖然所需的空格數(shù)量是靈活的,但保持一致是個(gè)好主意。
基本元素
集合
YAML 有兩種類型的集合。列表(用于序列)和字典(用于映射)。列表是鍵值對(duì),每個(gè)值都在一個(gè)新的行中,以連字符和空格開始。字典也是鍵值對(duì),每個(gè)值都是一個(gè)映射,包含一個(gè)鍵、一個(gè)冒號(hào)和空格以及一個(gè)值。
例如:
# My List
groceries:
- Milk
- Eggs
- Bread
- Butter
# My dictionary
contact:
name: Ayush Sharma
email: myemail@example.com
列表和字典經(jīng)常被結(jié)合起來,以提供更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。列表可以包含字典,而字典可以包含列表。
字符串
YAML 中的字符串不需要加引號(hào)。多行字符串可以用 |
或 >
來定義。前者保留了換行符,而后者則沒有。
例如:
my_string: |
This is my string.
It can contain many lines.
Newlines are preserved.
my_string_2: >
This is my string.
This can also contain many lines.
Newlines aren't preserved and all lines are folded.
錨點(diǎn)
YAML 可以通過節(jié)點(diǎn)錨點(diǎn)來獲得可重復(fù)的數(shù)據(jù)塊。&
字符定義了一個(gè)數(shù)據(jù)塊,以后可以用 *
來引用。例如:
billing_address: &add1
house: B1
street: My Street
shipping_address: *add1
至止你對(duì) YAML 的了解就足以讓你開始工作了。你可以使用在線 YAML 解析器來測(cè)試。如果你每天都與 YAML 打交道,那么 這個(gè)方便的備忘單 會(huì)對(duì)你有所幫助。