YAML 轉 JSON

免費線上 YAML 轉 JSON 工具,基於 js-yaml 函式庫解析 YAML 設定並自動轉換為標準 JSON 物件。YAML 的階層對映、清單陣列自動展開為 JSON 陣列,pretty 模式可切換縮排美化;內建 tryFixYAML 自動修復 5 類常見錯誤(製表符、未閉合引號、縮排、鍵名格式),純瀏覽器本地處理不上傳。

相關推薦

關於 YAML 轉 JSON:把 YAML 設定自動轉換為標準 JSON 物件

YAML 轉 JSON 是把 YAML(YAML Ain't Markup Language)格式的設定轉換為 JSON 物件的過程。YAML 是一種人類友好的資料序列化格式,廣泛用於 Kubernetes(k8s manifest、Helm chart)、Docker Compose、Ansible playbook、GitHub Actions、Prometheus 設定等現代 DevOps 和雲原生場景。JSON 是 Web API、JavaScript 生態、設定檔的標準格式。兩種格式各有所長:YAML 簡潔可讀、支援註解和複雜結構、適合人類編輯;JSON 簡潔明確、易於機器解析、適合 API 傳輸。本工具就是為了把 YAML 設定自動轉為 JSON 供現代應用使用。

本工具的核心是使用 js-yaml 函式庫解析 YAML 結構,然後透過 JSON.stringify 序列化為 JSON 物件。js-yaml 是成熟的 JavaScript YAML 解析器,支援所有標準 YAML 1.1 語法:標量(string、number、boolean、null、date)、序列(array)、對映(object)、錨點(&)、別名(*)、多行字串(| 或 >)、註解(#)。基於成熟函式庫的優勢是穩定性高、bug 少、支援完整的 YAML 規範。

YAML 到 JSON 的對映規則直觀:YAML 對映(key: value)轉 JSON 物件({"key": "value"});YAML 清單(- item)轉 JSON 陣列(["item"]);YAML 嵌套結構轉對應的 JSON 嵌套物件和陣列;YAML 字串/數字/布林/null 類型在 JSON 中保持對應類型。YAML 註解(#)會被自動忽略,因為 JSON 標準不支援註解。

pretty 輸出模式(預設 2 空格縮排)生成的 JSON 可讀性高,便於人工查看、複製、版本對比;非 pretty 模式輸出緊湊單行 JSON,適合網路傳輸、API 回應、儲存到資料庫等場景。點擊底部工具列的「格式化輸出」核取方塊可即時切換兩種模式。

錯誤自修復(tryFixYAML)是工具的實用設計。現實中的 YAML 檔案經常存在 5 類問題:1) 製表符與空格混用(YAML 要求一致使用空格);2) 行尾多餘空格;3) 未閉合的引號(單引號或雙引號數量為奇數);4) 縮排不是 2 的倍數(YAML 要求縮排必須一致遞增);5) 鍵名包含連字符或空格需要加引號。工具會自動偵測並修復這些問題,並提示使用者修復了哪些內容。

YAML 錨點和別名是 YAML 的進階特性。&anchor 定義一個可被引用的標記,*alias 在其他位置引用該標記。js-yaml 會先在內部解析為 JavaScript 物件(引用被替換為實際內容),所以最終生成的 JSON 不包含錨點資訊,相同的物件內容會在 JSON 中多次重複出現。這符合 JSON 的資料模型(JSON 是值型別語言,沒有引用概念),但對開發者意味著重複內容會冗餘儲存。

YAML 1.1 vs 1.2 的差異。YAML 1.1 是廣泛部署的版本(js-yaml 預設支援),包括八進制數(0123)、性別單字元(yes/no/true/false)、Norway 縮寫(foo: !!str bar)等。YAML 1.2 是最新穩定版,移除了這些歧義特性,與 JSON 規範更一致。本工具預設 YAML 1.1 以保證最大相容性,如需 YAML 1.2 嚴格模式可使用 schema: CORE_SCHEMA。

即時轉換是工具的實用功能。輸入 YAML 後 400ms 防抖自動觸發轉換,開發者可以快速試錯、修改、查看效果。結合快捷鍵和範例按鈕,開發者可以快速完成從 YAML 設定到 JSON 轉換的全流程。

純瀏覽器本地處理是本工具的核心架構。所有 YAML 解析、JSON 序列化、錯誤修復都在瀏覽器 JavaScript 中執行,js-yaml 作為外部相依性(~50KB)透過 npm 引入。原始 YAML 資料(可能包含敏感設定如 k8s secrets、API 金鑰、資料庫憑證)不上傳到伺服器,敏感設定可在本地安全處理。

適用場景

  • 把 Kubernetes manifest、Helm chart values.yaml 等 K8s 設定檔轉為 JSON,方便用 kubectl apply --validate 或 jq 查詢、合併、注入到 CI/CD 流程。
  • 把 Docker Compose 檔案(docker-compose.yml)轉為 JSON,方便用 docker stack deploy 部署到 Swarm 集群,或匯入到其他容器編排工具。
  • 把 GitHub Actions、GitLab CI、CircleCI 等 CI/CD 流水線設定(.github/workflows/*.yml)轉為 JSON,便於版本對比和模板化處理。
  • 把 Ansible playbook(playbook.yml、hosts、roles 等)轉為 JSON,配合 Python 或 Node.js 的設定載入庫進行程序化處理。
  • 把 Prometheus 告警規則、Alertmanager 設定、Promtail/Grafana Loki 等監控設定轉為 JSON,方便動態生成和測試。
  • 把 ESLint、Prettier、Stylelint、Commitlint 等前端工具的設定檔(.eslintrc、.prettierrc)轉為 JSON,配合 IDE 插件或編輯器。
  • 把 swagger / openapi YAML 規範檔案轉為 JSON,配合 swagger-codegen、openapi-generator 等工具生成用戶端 SDK 或伺服器樁程式碼。
  • 教學演示 YAML 與 JSON 的轉換關係,對比兩種資料格式的語法差異、縮排規則、註解處理、型別對映等。

使用方法

  1. 在左側輸入框貼上 YAML 內容,或點擊「上傳」按鈕選擇 .yaml/.yml/.txt 檔案,或點擊「範例」載入內建的使用者設定範例。
  2. 工具會自動轉換(輸入後 400ms 防抖);在右側查看轉換後的 JSON,CodeMirror 語法高亮便於閱讀。
  3. 點擊底部工具列的「格式化輸出」核取方塊可在 pretty(2 空格縮排)和緊湊兩種輸出模式間即時切換,適配不同應用場景。
  4. 如 YAML 有語法錯誤,點擊錯誤提示旁的「修復結構」按鈕,工具會呼叫 tryFixYAML 自動修復 5 類常見錯誤,並提示修復內容。
  5. 點擊「複製」將 JSON 複製到剪貼簿,或點擊「下載」儲存為 converted.json 檔案(MIME: application/json)。
  6. 將 JSON 貼到目標程式碼(kubectl apply、swagger-codegen、自訂 Node.js 設定載入庫等)或匯入到後端服務進行進一步處理。

功能特點

  • js-yaml 函式庫解析:基於成熟的 js-yaml 函式庫支援所有標準 YAML 1.1 語法(標量、序列、對映、錨點、別名、多行字串等),無相依性。
  • 智慧錯誤修復:內建 tryFixYAML 自動修復 5 類常見 YAML 錯誤(製表符、未閉合引號、縮排不規範、鍵名特殊字元、行尾空格)。
  • pretty 輸出模式:預設 2 空格縮排美化輸出,便於閱讀和人工編輯;非 pretty 模式輸出緊湊單行 JSON,適合網路傳輸。
  • 完整型別支援:支援所有 YAML 標量類型(string、number、boolean、null、date)、序列(array)、對映(object)的雙向轉換。
  • 嵌套結構遞迴:任意深度的 YAML 嵌套對映和清單會遞迴轉換為對應的 JSON 嵌套物件和陣列。
  • 錨點別名解析:支援 YAML 錨點(&anchor)和別名(*alias)語法,js-yaml 自動解析引用關係,JSON 中顯示展開後的內容。
  • YAML 註解忽略:YAML 註解(#)會被自動忽略,轉換後的 JSON 是純資料,不包含註解。
  • 即時自動轉換:輸入 YAML 後 400ms 防抖自動轉換,配合鍵盤快捷鍵提升操作效率。
  • JSON 高亮輸出:右側 CodeMirror JSON 語法高亮,便於閱讀複雜 JSON 結構。
  • 純瀏覽器本地處理:所有 YAML 解析、JSON 序列化、錯誤修復都在瀏覽器 JavaScript 中完成,原始設定不上傳。
  • 歷史記錄恢復:自動儲存最近 200 條歷史記錄,頁面載入時自動恢復上次輸入內容。
  • 完整快捷鍵體系:轉換、上傳、複製、下載、清空等常用操作,遵循主流 JSON/YAML 編輯工具約定。

常見問題

怎麼把 YAML 轉成 JSON 格式?

把 YAML 內容貼到左側輸入框,工具會使用 js-yaml 函式庫解析 YAML 結構(鍵值對、清單、嵌套對映、註解等),並自動轉換為標準 JSON 物件。對映:YAML 對映轉 JSON 物件({key: value})、YAML 清單轉 JSON 陣列([item1, item2])、YAML 字串/數字/布林直接對應 JSON 類型。400ms 後自動轉換,無需手動點擊。

YAML 中的註解(#)會保留在 JSON 中嗎?

不會。YAML 註解(以 # 開頭的行)只是給開發者閱讀用的,js-yaml 解析時會自動忽略。轉換後的 JSON 是純資料,不包含任何註解。如需保留文件結構,建議保留原始 YAML 檔案作為註解來源,或在 JSON 欄位名中使用 'comment' 欄位顯式儲存註解。

支援哪些 YAML 資料類型?

支援所有標準 YAML 1.2 類型:標量(字串、數字、布林、null)、序列(清單/陣列)、對映(物件/字典)、嵌套結構(多層縮排)、多行字串(| 或 >)、錨點與別名(& 和 *)、文件分隔符(---)。特殊格式如日期、ISO 8601 時間戳會自動被解析為 JavaScript Date 物件(在 JSON 中轉為字串)。

什麼是 pretty 輸出模式?

工具支援兩種輸出模式:pretty(預設)輸出帶 2 空格縮排和換行的格式化 JSON,可讀性高便於閱讀和人工編輯;非 pretty 輸出緊湊的單行 JSON,適合網路傳輸、API 回應、儲存到資料庫等場景。點擊底部工具列的「格式化輸出」核取方塊可即時切換兩種模式。

遇到格式不規範(如縮排錯誤)的 YAML 能轉換嗎?

可以。工具內建 tryFixYAML 修復函式,會自動修復 5 類常見錯誤:1) 製表符自動轉為 2 空格縮排;2) 移除行尾多餘空格;3) 修復未閉合的單引號/雙引號;4) 自動修正非 2 倍數的縮排;5) 修復包含連字符或空格的鍵名(自動加引號)。這一設計顯著提升了對實際專案中不規範 YAML 的相容性。

支援哪些輸入檔案類型?

支援 .yaml、.yml、.txt 檔案(UTF-8 編碼)。點擊「上傳」按鈕選擇本地檔案,工具透過瀏覽器原生 FileReader API 讀取,不會上傳到伺服器。上傳成功後內容自動填入輸入框並觸發自動轉換。檔案類型檢查在用戶端執行,不符合的檔案類型會顯示錯誤提示。

下載的 JSON 檔案用什麼打開?

下載檔案 converted.json 是 UTF-8 編碼的標準 JSON 檔案(MIME: application/json),可用任何文字編輯器(VS Code、Sublime、Notepad++)或專業 JSON 工具(jq、JSDoc)打開。JavaScript、Python、Node.js、Java、Go 等幾乎所有程式語言都內建 JSON 解析器,可直接匯入使用。

支援 YAML 多行字串嗎?

支援。YAML 提供了兩種多行字串語法:字面量塊(|)保留換行,摺疊塊(>)將換行摺疊為單行空格。js-yaml 都能正確解析。多行字串會按 YAML 規範在 JSON 中表示為帶換行符或單行空格的字串,可直接在應用中使用。

YAML 錨點和別名怎麼轉換?

YAML 支援錨點(&anchor)和別名(*alias)語法用於引用重複內容。js-yaml 會先解析為 JavaScript 物件,錨點和別名在轉換過程中會被解析器內部解析(每個別名引用會被替換為錨點的實際內容),所以最終生成的 JSON 中不包含錨點資訊,相同的物件內容會在 JSON 中重複出現(不會共享引用)。這符合 JSON 的資料模型(無引用概念)。

YAML 中的日期和時間如何處理?

js-yaml 遵循 YAML 1.1/1.2 規範,ISO 8601 格式的日期/時間戳(如 2026-01-15T10:30:00Z)會被自動解析為 JavaScript Date 物件。轉為 JSON 時,Date 物件會透過 JSON.stringify 序列化為 ISO 8601 字串。但請注意:解析後型別會丟失(JSON 沒有原生的 Date 類型),需要時可在應用層進行型別標註。

支援哪些 YAML 版本?

工具透過 js-yaml 函式庫支援 YAML 1.1(預設)和 YAML 1.2(透過 schema 選項配置)。YAML 1.2 是最新穩定版,移除了 YAML 1.1 中的一些歧義語法(如 8 進制、性別單字元值),推薦使用。本工具預設使用 YAML 1.1 以保證最大相容性。如需啟用 YAML 1.2,可使用 schema: CORE_SCHEMA 或 JSON_SCHEMA。

支援哪些輸入檔案大小?

理論上無硬性上限,受瀏覽器記憶體限制。1-2 MB 以內的 YAML 可流暢處理;更大檔案可能因 js-yaml 解析 DOM 樹佔用較多記憶體而變慢。如處理大型 Kubernetes manifest 或 Docker Compose 檔案出現卡頓,建議在本地 YAML 編輯器中精簡或拆分。所有解析在瀏覽器本地完成,敏感設定(如 k8s secrets)不會上傳到伺服器。

故障排查

YAML 解析報 'unexpected token' 錯誤?

原因通常是縮排錯誤(混用製表符和空格、不一致的層級)、未閉合的引號、鍵值對缺少冒號、或清單符號 - 位置錯誤。點擊錯誤提示旁的「修復結構」按鈕,工具會呼叫 tryFixYAML 自動修復 5 類常見錯誤,並提示修復了哪些行。如果仍無法解析,請檢查 YAML 是否使用了非標準語法(如製表符縮排)。

YAML 錨點引用 (*alias) 轉換後丟失了?

這是正常行為。js-yaml 在內部解析時自動展開引用,最終 JSON 中不保留錨點資訊,相同的物件內容會在 JSON 中多次重複出現(不共享引用)。如需保留引用關係,建議在解析後的 JSON 中使用 $ref 欄位(JSON Reference 規範)或在應用層維護引用對映。

布林值變成了字串?

YAML 中 yes/no/on/off/true/false 在 YAML 1.1 中都被解析為布林值(YAML 1.2 移除了 yes/no)。如果你的 YAML 1.2 檔案中使用 yes/no 但被解析為字串,請將它們改為 true/false,或在解析前明確加上引號 'yes' 強制字串型別。

為什麼日期變成了 ISO 字串?

YAML 中的 ISO 8601 日期(如 2026-01-15、2026-01-15T10:30:00Z)會被 js-yaml 自動解析為 JavaScript Date 物件。JSON.stringify 序列化 Date 物件時使用 toISOString() 輸出 ISO 字串。如果需要保留為自訂格式(如 YYYY-MM-DD HH:mm:ss),可以在解析後用 date-fns、moment.js 等函式庫重新格式化。

如何保留 YAML 註解?

工具目前不保留註解,因為 JSON 標準不支援註解。建議方案:1) 在原始 YAML 檔案中維護註解(註解用於開發者溝通);2) 轉換後在 JSON 中用 'comment' 欄位顯式儲存文件說明;3) 使用專門的文件工具(如 Swagger 的 openapi 規範)保留 API 文件。

多文件 YAML 檔案(用 --- 分隔)如何處理?

預設只解析第一個 YAML 文件。js-yaml 支援 loadAll() 方法解析多文件,但本工具目前僅支援單文件。如需處理多文件 YAML,可先用文字編輯器分割為多個檔案,或使用 js-yaml 的 loadAll() API 自訂實作。

下載的 .json 檔案用什麼打開?

下載檔案 converted.json 是 UTF-8 編碼的標準 JSON 檔案(MIME: application/json),可用任何文字編輯器(VS Code、Sublime、Notepad++)或專業 JSON 工具(jq、JSDoc)打開。可直接拖入瀏覽器查看格式化結構。JavaScript、Python、Node.js、Java、Go 等幾乎所有程式語言都內建 JSON 解析器。

術語表

YAML (YAML Ain't Markup Language)
人類友好的資料序列化格式,2001 年由 Clark Evans 等人設計。使用縮排表示層級、支援註解、清單、對映、多行字串、錨點與別名等特性。是 Kubernetes、Docker Compose、Ansible、GitHub Actions 等現代 DevOps 工具的事實設定標準。
JSON (JavaScript Object Notation)
輕量級資料交換格式,基於 JavaScript 物件語法但獨立於程式語言。支援物件 ({}), 陣列 ([]), 字串, 數字, 布林, null 六種基本型別。是現代 Web API、NoSQL 資料庫、JavaScript 生態的事實標準。
js-yaml
成熟的 JavaScript YAML 解析器和序列化器(~50KB),支援 YAML 1.1 完整規範和部分 1.2。本工具基於此函式庫實現 YAML 解析為 JavaScript 物件,再透過 JSON.stringify 序列化為 JSON。
縮排(indentation)
YAML 嚴格依賴縮排表示層級關係,必須使用空格(不能使用製表符)且縮排必須一致(如 2 空格)。這是 YAML 最常見錯誤源之一。本工具自動偵測和修復縮排問題。
錨點與別名(anchor & alias)
YAML 進階特性。&anchor 定義可被引用的標記,*alias 在其他位置引用該標記。js-yaml 在內部解析時自動展開引用,最終 JSON 中不保留這些標記,只包含展開後的資料。
多行字串(multiline)
YAML 提供兩種多行字串語法。字面量塊(|)保留換行符;摺疊塊(>)將多個換行摺疊為單個空格。js-yaml 正確解析這兩種語法,轉換到 JSON 時按規範保留或摺疊換行。
文件分隔符(document separator ---)
YAML 中三個連續連字元(---)表示文件分隔符,常用於在一個檔案中包含多個 YAML 文件。js-yaml 預設只解析第一個文件,多文件解析需特殊處理。
YAML 1.1 vs 1.2
YAML 1.1(2005)廣泛部署,支援八進制、性別單字元、Norway 縮寫等。YAML 1.2(2009)移除了歧義特性,與 JSON 更相容。本工具預設 YAML 1.1 以保證最大相容性。
錨點(&)
YAML 中 &name 定義一個可被後續 *name 引用的標記,常用於避免在多文件中重複相同設定區塊。
別名(*)
YAML 中 *name 引用之前用 &name 定義的標記,js-yaml 在解析時會將引用替換為實際內容,最終 JSON 中不含別名資訊。
JSON.stringify
JavaScript 內建方法,將物件序列化為 JSON 字串。本工具使用第 2 個參數(replacer)和第 3 個參數(space)控制縮排:space=2 生成 pretty 輸出,space=undefined 輸出緊湊單行。
tryFixYAML
本工具內建的 YAML 修復函式,會自動偵測和修復 5 類常見錯誤:製表符轉空格、移除行尾空格、閉合未閉合引號、修正非 2 倍數縮排、為包含特殊字元的鍵名加引號。處理實際專案中不規範的 YAML。
pretty 輸出
本工具的可切換輸出模式。啟用時輸出帶 2 空格縮排和換行的可讀 JSON(便於人工查看);停用時輸出緊湊單行 JSON(適合 API 傳輸、儲存)。

YAML 到 JSON 類型的對映規則

本工具基於 js-yaml 的 YAML 到 JSON 轉換對映規則:

YAML 類型YAML 範例JSON 輸出對映規則
stringname: Alice"name": "Alice"YAML 字串值轉為 JSON 字串(帶雙引號)
numberage: 30"age": 30YAML 數字保持為 JSON 數字(不帶引號)
booleanisActive: true"isActive": trueYAML 布林(true/false)保持為 JSON 布林
nullvalue: null / value:"value": nullYAML null 或空值轉為 JSON null
sequence- a\n- b\n- c["a", "b", "c"]YAML 清單(-)轉為 JSON 陣列
mappingname: Alice\nage: 30{"name": "Alice", "age": 30}YAML 對映(key: value)轉為 JSON 物件
nested mappinguser:\n name: Alice\n age: 30{"user": {"name": "Alice", "age": 30}}YAML 嵌套縮排轉為 JSON 嵌套物件
list of objects- name: a\n- name: b[{"name": "a"}, {"name": "b"}]YAML 清單項為物件時轉為 JSON 物件陣列
datecreatedAt: 2026-01-15"createdAt": "2026-01-15T00:00:00.000Z"ISO 8601 日期轉為 Date 物件再序列化為 ISO 字串

YAML 與 JSON 格式對比

兩種格式在不同維度上的對比,幫助理解何時選擇 YAML 或 JSON:

維度YAMLJSON說明
語法縮排 + : - 簡潔{ } : [ ] 嚴格YAML 簡潔但易錯(縮排敏感),JSON 嚴格但冗長
註解# 註解不支援YAML 支援註解,JSON 標準不支援
資料類型標量、序列、對映字串、數字、布林、null、物件、陣列YAML 更豐富(含 date、binary 等),JSON 較簡單
陣列- item1\n- item2["item1", "item2"]YAML 用破折號,JSON 用方括號
可讀性高(無引號無括號)中等(括號噪音)YAML 對人類更友好
多行字串| 或 > 區塊語法需 \n 轉義YAML 原生支援,JSON 需轉義
引用&anchor *alias不支援(需重複)YAML 支援錨點別名,JSON 必須重複
使用場景設定檔、CI/CD、k8sAPI 回應、儲存、WebYAML 適合設定,JSON 適合 API

常見 YAML 錯誤和修復

本工具 tryFixYAML 自動偵測和修復的 5 類常見 YAML 錯誤:

錯誤類型錯誤範例自動修復說明
製表符縮排key:\n\tvaluekey:\n value
行尾空格key: value key: value
未閉合引號key: 'valuekey: 'value'
縮排不規範 key:\n valuekey:\n value
鍵名特殊字元my-key: value"my-key": value

Privacy & Security

本 YAML 轉 JSON 工具所有操作完全在你的瀏覽器本地完成:YAML 解析(基於成熟的 js-yaml 函式庫)、JSON 序列化、錯誤修復(tryFixYAML)全部透過瀏覽器 JavaScript 在用戶端執行,js-yaml 是唯一外部相依性(約 50KB 的 npm 包)。原始 YAML 資料(可能包含敏感設定如 k8s secrets、API 金鑰、資料庫憑證)不上傳到任何伺服器。檔案上傳使用瀏覽器原生 FileReader API 直接讀取到記憶體,不經過任何中介服務。不使用 Cookie 追蹤,不收集任何使用者輸入或使用資料。關閉或重新整理頁面後,所有輸入和輸出內容自動從記憶體清除。適合處理含敏感設定(k8s secrets、API 金鑰、資料庫憑證、企業 DevOps 流水線)的 YAML 檔案。

Authoritative References