YAML 格式化工具

格式化、驗證並轉換 YAML 文件,具備語法高亮與錯誤偵測功能

本機執行

YAML 輸入

格式化輸出

檢查器

貼上有效的 YAML — 結構、樹狀圖與鍵路徑將自動顯示於此

進階選項

與另一份 YAML 比較

將此文件傳送到 Data Diff,再貼上第二個版本,即可查看有哪些變更。

驗證並顯示確切的錯誤位置

使用 js-yaml 1.2 剖析器在每次按鍵輸入時進行驗證。有效的文件會即時顯示文件數、mapping、序列、鍵與深度的統計;無效的文件則會回報確切的行與欄、可能原因,並在出錯位置高亮標示 —— 而不只是 "syntax error"。

本工具能精確定位的常見 YAML 錯誤

這些錯誤佔了無效 YAML 的大多數。每一種都會偵測出位置與可能原因:

縮排錯誤

子行縮排少於父行,或同層行未對齊。通常會在確切的行數回報為 "bad indentation of a mapping entry"。

TAB 字元

YAML 禁止在縮排中使用 TAB。剖析器會回報 "found a tab character that violates indentation",並高亮標示出錯的行。

重複的鍵

同一個 mapping 中出現兩次相同的鍵。js-yaml 會回報 "duplicated mapping key",並指出第二次出現的行數。

缺少冒號或空格

鍵後沒有值("key key2"),或冒號緊貼著鍵("key:value" 會被視為純字串,而非鍵值對)。會回報為 "could not find expected ':'"。

格式化前 / 格式化後

左側為精簡的 Kubernetes manifest,右側為以 2 空格縮排格式化後的同一份文件。結構、樹狀圖與路徑會依剖析後的文件更新。

Before (flow style)
{apiVersion: apps/v1, kind: Deployment, metadata: {name: web-app}, spec: {replicas: 3, template: {metadata: {labels: {app: web}}}}}
After (block style)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: web

YAML 快速參考(YAML 1.2)

  • 縮排即結構:只能使用空格 —— 縮排絕不允許使用 TAB 字元。
  • 冒號後必須加一個空格才是鍵的分隔符:"key: value",而不是 "key:value"。
  • 純量會依 core schema 解析為型別:true/false(布林值)、整數、浮點數、null(~ / null / 空值)。注意在 1.2 中 "yes"/"no" 只是普通字串。
  • 同一個檔案中的多份文件以 "---" 行分隔;"..." 表示文件結束。
  • 錨點(&base)與別名(*base)可讓檔案保持 DRY;合併鍵("<<: *base")可繼承 mapping。

這份資料的後續步驟

格式化只是第一步。不需離開瀏覽器即可繼續後續流程:

常見問題解答

關於 Yaml Formatter 格式化的常見問題解答

本格式化工具遵循 YAML 1.2 規範,確保與 Kubernetes、Docker Compose、GitHub Actions 等現代工具及雲端原生平台相容。

是的,雙向轉換功能可讓您將 YAML 轉換為 JSON,以及將 JSON 轉換為 YAML,同時保留資料型別、巢狀結構,並在適用情況下保留註解。

當然可以。此格式化工具專為處理 Kubernetes manifests、Docker Compose 檔案、CI/CD 管線,以及其他多文件 YAML 檔案而設計,能正確分隔各個文件區段。

驗證器會檢查縮排一致性、冒號與連字號的使用是否正確、引號字串是否成對,以及錨點與別名的參照,並提供標明行號的錯誤訊息,方便快速除錯。

是的,格式化工具能正確處理 YAML 錨點、別名與合併鍵(merge keys),在格式化周邊結構的同時保留這些符合 DRY 原則的特性。

YAML 1.2,即 yaml.org 目前的規範,也是 Kubernetes、docker-compose 與 GitHub Actions 文件所針對的版本。YAML 1.2 將 JSON 納為有效子集,並收緊布林值的解析規則;當 1.1 版解析器(在 Python PyYAML 中仍十分常見)可能誤讀 "no" 或 "0777" 這類值時,格式化工具會保留明確的引號標註。

YAML 錨點、別名與區塊純量會讓註解原封不動地保留,但附在需要重新縮排的鍵上的註解,會隨著其縮排層級一起移動。格式化工具絕不會刪除註解——它只會以最小的幅度調整註解位置,使其持續附著於所描述的節點上。

它會標記這個問題:未加引號的 NO、no、ON、on、yes、n 在格式化時會自動加上引號,因此 YAML 1.1 解析器無法將它們強制轉換為布林值。國家代碼清單 [NO, SE, DK] 會維持為三個字串。YAML 1.2 只將 true/false 視為布林值,但加上引號是唯一在兩種版本下都安全的輸出方式。

{-- * External Resources Component(#19 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / 官方语言文档 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}

相關工具