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 規範中,官方建議統一使用 truefalse,以增加不同解析器之間的相容性。

Null (空值)

當你想表達一個欄位沒有值時,可以使用 nullNull、大寫的 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

掌握了這些基本資料單元後,我們就能開始組合它們,建立更複雜的集合結構了!