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 場景了。