JSON ↔ YAML

JSON ↔ YAML 轉換器

為 k8s、GitHub Actions、Docker Compose、helm 而生的雙向轉換。即時預覽、idiomatic YAML 輸出,全部在瀏覽器內運算。

js-yaml 很棒,但每次頁面載入會多 ~30 KB(minified)。實戰配置檔的 YAML 只用到規範的一小部分 — block mappings、block sequences、flow style、scalar 型別、多行 literal。我們手刻了正好這個子集(~5 KB),讓冷啟動保持快速。如果你的 YAML 用到 anchors、aliases 或 custom tags,改用 js-yaml 的 CI pipeline。

三個在配置檔中很罕見的功能:(1)anchors 與 aliases(&name / *name) — 用於文件內去重;(2)custom tags(!!str / !!float / !!omap) — 用於覆蓋隱式型別推論;(3)多文件檔--- 分隔。這些都不會出現在標準 k8s、GitHub Actions、Docker Compose、helm 或 ansible 檔案。如果你需要它們,改用完整 YAML parser。

輸入 JSON
輸出 YAML

為實戰 DevOps YAML 而生

k8s、GitHub Actions、Docker Compose、helm、ansible — 加上幾個讓你真正用得開心的小細節。

雙向、即時

貼任一格式立即得到另一個。每次按鍵後即時更新 — 不需要按 Convert 按鈕。一鍵切換方向,同一個工具反方向跑。

為配置檔設計的 YAML 1.2 子集

Block 與 flow mappings/sequences、scalar(string、number、boolean、null)、多行 literal(|)與 folded(>)block scalar。涵蓋 99% 的 k8s manifests、GitHub Actions、Docker Compose、GitLab CI、helm values、ansible playbook。

Idiomatic YAML 輸出

JSON → YAML 輸出你會手寫的 YAML:plain-style key(不加引號)、字串只有在會與保留字(true/false/null/yes/no)或數字混淆時才加引號、多行字串用 | block scalar、可選 2 或 4 空格縮排。

Round-trip 安全

JSON → YAML → JSON 產出位元組相同的文件。任一方向轉換,反向都能乾淨還原。沒有靜默遺失型別或被自動轉型。

保護隱私

你的配置永遠不會離開裝置。手刻 parser + serializer 全部以 JavaScript 在本地執行。打開 DevTools → Network 即可驗證沒有任何對外請求。

輕量且快速

純 JavaScript,沒有 js-yaml 依賴。冷啟動 gzip 後不到 25 KB。一般筆電上,100 KB 的 k8s manifest 30 毫秒內完成轉換。

如何 JSON ↔ YAML 轉換

從原始配置到你需要的格式,三個步驟。

  1. 1

    貼上你的 JSON 或 YAML

    把配置丟到 Input 面板。從 Direction 下拉選單選擇格式 — 需要時切換方向。每次按鍵後即時轉換。

  2. 2

    微調縮排與驗證

    預設縮排 2 空格(k8s / GitHub Actions 慣例)。團隊用 4 就切換。按 Swap 把輸出搬回輸入 — 適合 round-trip 驗證(貼 JSON、轉成 YAML、Swap、再轉回來、跟原文比對)。

  3. 3

    複製或下載

    按複製圖示把結果丟到剪貼簿,或按下載圖示存成 output.yamloutput.json。底部顯示位元組差異,讓你看到 YAML 表示有多精簡。

為 DevOps + 後端團隊打造

四種常見場景 — 在這些情況下,瀏覽器內隱私優先工具比寫一個 one-off Python 腳本快太多。

Kubernetes manifests round-trip

kubectl get deployment my-app -o json → 貼進來 → YAML → 編輯 → 套用。或者:把 vendor 文件中的 YAML manifest 貼進來、轉 JSON、跑 jq 過濾、再轉回 YAML、commit。

從部落格抓 GitHub Actions / GitLab CI snippet

部落格用 JSON 顯示 CI snippet。貼進來、得到 YAML、貼到 .github/workflows/ci.yml。或者:多 job 的 YAML workflow 轉成 JSON 做程式化編輯,再轉回 YAML。

Helm values + Docker Compose

Helm values 檔是 YAML;某些 templating 工具要 JSON。貼你的 values.yaml、得到 JSON、跑你的工具、貼回來、轉回 YAML 提交。Docker Compose 的 compose.yaml 同樣的流程。

不能進雲端服務的敏感配置

含 API key、機密、內部 hostname、客戶資料的配置 — 任何不能貼到雲端 converter 的東西。瀏覽器內工具讓每個位元組都留在你的筆電上。打開 DevTools → Network 驗證沒有東西外洩。

100% 私密 — 在瀏覽器中運算

你的配置永遠不會離開裝置。打開 DevTools → Network,轉換過程中沒有任何對外請求。

  • 手刻 YAML parser、YAML serializer、原生 JSON.parse、剪貼簿 / 下載全部以 JavaScript 在你的機器上執行 — 沒有 js-yaml CDN、沒有第三方 API。
  • 無需登入、不對配置內容埋點。只用一個 cookie 記錄 cookie 同意狀態,以及一個 cookie 記錄語言偏好。
  • 如果你處理敏感基礎設施配置(kubeconfig snippet、secret manifest、簽署過的憑證),隱私故事很重要 — 放心貼。可在 DevTools 中驗證。

相關文章

為 YAML 配置模式、JSON 工具、DevOps 檔案格式精選的實用文章。

常見問題

已經有 <code>js-yaml</code> 了,為什麼還要自己寫 YAML 支援?

js-yaml 很棒,但每次頁面載入會多 ~30 KB(minified)。實戰配置檔的 YAML 只用到規範的一小部分 — block mappings、block sequences、flow style、scalar 型別、多行 literal。我們手刻了正好這個子集(~5 KB),讓冷啟動保持快速。如果你的 YAML 用到 anchors、aliases 或 custom tags,改用 js-yaml 的 CI pipeline。

哪些 YAML 功能不支援?

三個在配置檔中很罕見的功能:(1)anchors 與 aliases(&name / *name) — 用於文件內去重;(2)custom tags(!!str / !!float / !!omap) — 用於覆蓋隱式型別推論;(3)多文件檔--- 分隔。這些都不會出現在標準 k8s、GitHub Actions、Docker Compose、helm 或 ansible 檔案。如果你需要它們,改用完整 YAML parser。

註解會保留嗎?

不會 — 註解在解析時被去除。YAML 支援註解(#...),但 JSON 不支援。把 YAML 透過 JSON round-trip 一定會遺失註解資訊。我們選擇在解析時直接去除,而不是用 hack 嘗試保留。如果你需要保留註解的 YAML 編輯,直接編輯 YAML。

為什麼我的數字被轉成字串?

YAML 的隱式型別規則比 JSON 寬鬆:1.2.3 在 YAML 是字串(因為有兩個點,不是數字),版本號像 v1.2 不加引號也是字串。我們遵循 YAML 1.2 隱式型別規則:只有符合 ^-?\d+(\.\d+)?([eE][-+]?\d+)?$ 的數字會變成 number;其他保持字串。如果你需要精確的數字處理,在 YAML 加引號或直接用 JSON。

資料會傳到伺服器嗎?

不會。YAML parser、serializer、JSON parser、剪貼簿複製全部以 JavaScript 在你的裝置上執行。打開 DevTools → Network 即可驗證轉換過程沒有任何對外請求。貼 production k8s manifests、內部 CI 配置、含密的 helm values 進來都安全 — 沒有任何位元組離開你的筆電。