YAML 資料型態:純量 (Scalars)
在 YAML 中,最基礎的資料單元被稱為「純量」(Scalars)。簡單來說,純量就是不可再分割的單一值,例如一段文字、一個數字或一個布林值。
YAML 的聰明之處在於它能自動推斷大多數資料的類型,但了解背後的運作規則能幫助你避免不必要的 Bug。
字串 (Strings)
YAML 中的字串極其靈活。你可以不加引號、加單引號或加雙引號。
不加引號 (Plain style)
如果字串中不包含特殊字元,你可以直接寫出來。
message: Hello World # 自動辨識為字串
單引號 (Single-quoted) ''
單引號內的內容會被「完全照原樣轉義」。除了單引號本身(需要用兩個單引號 '' 表示),裡面的特殊字元都不會被處理。
# 輸出結果為: 這是 \n 換行符號
path: '這是 \n 換行符號'
雙引號 (Double-quoted) ""
雙引號支援轉義字元(如 \n 為換行)。如果你需要在字串中使用換行或特殊控制字元,請使用雙引號。
# 輸出結果會換行
greeting: "Hello\nWorld"
數值 (Numbers)
YAML 支援整數與浮點數,甚至支援十六進位與八進位。
# 整數
count: 42
# 浮點數
pi: 3.14159
# 科學記號
big_number: 1.2e+10
# 十六進位 (0x 開頭)
hex_value: 0xFF
# Null 值 (也可以寫 null 或 ~)
empty_field: null
布林值 (Booleans)
這是 YAML 比較特別的地方。在 YAML 1.1 中,支援非常多種布林值的寫法。
# 常見的寫法
is_enabled: true
is_active: false
# 這些在舊版 YAML 也被視為布林值 (建議統一用 true/false)
legacy_yes: yes
legacy_no: no
on_switch: on
off_switch: off
注意:在較新的 YAML 1.2 規範中,官方建議統一使用
true 與 false,以增加不同解析器之間的相容性。Null (空值)
當你想表達一個欄位沒有值時,可以使用 null、Null、大寫的 NULL 或者一個波浪號 ~。甚至留空也可以。
database: null
password: ~
port: # 留空也被視為 null
日期與時間 (Timestamp)
YAML 內建支援符合 ISO 8601 格式的日期與時間。
# 只有日期
created_at: 2026-01-01
# 日期與時間 (ISO 8601)
updated_at: 2026-01-01T12:00:00+08:00
強制手動指定型態
如果你擔心解析器對資料型態判斷有誤(例如你想讓數字 123 被當作字串處理),可以使用 !! 標記來顯式指定型態。
# 將數字強制視為字串
string_id: !!str 12345
# 將 true 視為字串而非布林值
literal_true: !!str true
| 型態 | 標記 (Tag) | 範例 |
|---|---|---|
| 字串 | !!str | !!str 2026 |
| 整數 | !!int | !!int "100" |
| 浮點數 | !!float | !!float 10 |
| 布林值 | !!bool | !!bool "true" |
| 空值 | !!null | !!null null |
| 日期時間 | !!timestamp | !!timestamp 2026-01-01 |
掌握了這些基本資料單元後,我們就能開始組合它們,建立更複雜的集合結構了!