YAML 集合類型:Map 與 List

在認識了基礎的「純量」後,接著我們要學習如何將資料組織起來。YAML 提供兩種核心的集合結構:Map (映射)List (列表)

這兩者的組合能讓你表達極其複雜的資料關係。

Map (映射/字典/物件)

Map 是由「鍵值對」組成的集合,類似於程式語言中的 Dictionary、Hash 或 Object。

基本寫法 (Block Style)

在 YAML 中,這是最常見的寫法,每個鍵佔一行,並使用縮排表示層級。

# 一個簡單的 Map
user:
  id: 101
  name: "Alice"
  role: "Admin"

流式寫法 (Flow Style)

如果你希望更精簡,可以使用類似 JSON 的大括號 {}。這在撰寫簡單的巢狀結構時非常方便。

# 與上方等效的流式寫法
user: { id: 101, name: "Alice", role: "Admin" }

List (列表/陣列/序列)

List 是一組有序的資料集合,類似於程式語言中的 Array。

基本寫法 (Block Style)

使用一個「減號 -」加上一個空格。

# 一個簡單的 List
skills:
  - "Python"
  - "Go"
  - "Docker"

流式寫法 (Flow Style)

使用中括號 [],並以逗點分隔。

# 與上方等效的流式寫法
skills: [ "Python", "Go", "Docker" ]

巢狀組合 (Nested Structures)

YAML 的強大之處在於你可以隨意組合 Map 與 List。

List 中包含 Map

這是處理一系列物件時最常用的格式(例如 Kubernetes 的環境變數設定)。

# 使用者列表
employees:
  - name: "Mike"
    department: "IT"
  - name: "Jerry"
    department: "Sales"

Map 中包含 List

用於表示一個鍵擁有多個值(例如標籤、分類)。

# 文章資訊
post:
  title: "YAML 教學"
  tags:
    - Tutorial
    - Config
    - Dev

常見錯誤與注意事項

忘記空格

不管是冒號 : 或是減號 -,後面都一定要接一個空格。

# 錯誤範例
invalid:key:value  # 冒號後沒空格
-list-item        # 減號後沒空格

混淆縮排

雖然同一階層只要對齊即可,但建議團隊統一使用 2 個空格,以保持檔案的一致性與可讀性。

# 良好的習慣:始終保持 2 格縮排
parent:
  child:
    grandchild: "value"
YAML 本身並不限制縮排的格數,但一致的縮排能顯著降低人為閱讀錯誤。

學會了如何組織資料後,你已經能處理 80% 的 YAML 場景了。