YAML 格式化工具

將 YAML 整理為統一的縮排寬度,或轉換為 JSON。可檢測製表符混入和縮排不一致等問題。

使用提示

  • 本工具採用自研的輕量級解析器,支援 key: value 鍵值對、巢狀、列表,以及內聯的 [a, b, c]{a: 1} 寫法。
  • 即使貼上縮排不統一(例如 3 個或 5 個空格)的 YAML,只要能成功解析,就可以重新輸出為統一的 2 或 4 個空格縮排。
  • 在“轉換為 JSON”模式下,可以直接預覽將 YAML 內容轉換成 JSON 的結果,方便與 CI 配置或 API 響應進行比較。
  • 出現錯誤時會顯示行號,請檢查該行的縮排或冒號後面是否忘記加空格。
  • YAML 規範禁止使用製表符縮排。建議在編輯器設定中開啟“將製表符轉換為空格”,以避免這類問題。

常見問題

對於需要人工編輯和審閱的配置檔案(如 CI 配置、Kubernetes 清單等),YAML 支援註釋、可讀性更高,更為合適;而對於程式之間互動的場景(如 API 響應),歧義更少、解析速度更快的 JSON 更為合適。

YAML 規範禁止使用製表符進行縮排。大多數解析器會將其視為語法錯誤並中止處理。建議將編輯器設定為自動把製表符轉換為空格,以確保安全。

不支援。本工具面向 Docker Compose、GitHub Actions 等場景中常見的“常用子集”(對映、列表、內聯流式集合以及基本標量型別),不支援錨點、別名、多文件、塊狀標量(|>)等高階功能。

這是一個著名的陷阱:如果不加引號直接寫 noyesonoff,許多 YAML 實現會將其解釋為布林值,而不是普通字串(例如挪威的國家程式碼)。如果希望將其作為字串處理,需要用引號括起來,例如 "no"
ツールくん

閒話 ― YAML 為何成為配置檔案的主流選擇

YAML(YAML Ain't Markup Language)是一種誕生於 2001 年的資料序列化格式。由於不需要閉合標籤、外觀比 XML 更簡潔,自 2010 年代以來被廣泛用作基礎設施配置檔案的格式,例如 Docker Compose、GitHub Actions 和 Kubernetes 清單檔案都採用了 YAML。

不過,YAML“用縮排表達結構”的設計雖然對人類來說易讀,卻也存在一個弱點:複製貼上時縮排很容易被打亂。尤其是當製表符和空格混用時,許多解析器不會報錯,而是悄悄地將其解釋為錯誤的結構,這很容易成為配置失誤的溫床。

此外還有一個著名的陷阱,被稱為“挪威問題”。如果不加引號直接寫國家程式碼 no,許多 YAML 實現會將其解釋為布林值 false。YAML 1.1 與 1.2 版本對哪些字串會被視為布林值的規定也有所不同,這也是不同實現之間相容性問題的常見成因。