UltKit

JSON 轉 YAML 轉換器

把 JSON 改寫成方便閱讀、審查與加註解的 YAML。上傳 .json 檔案,即可取得縮排整齊的 .yaml,鍵、值與順序完全不變,可直接放進程式碼庫。

資料轉換器

或將CSV, TSV, TXT … 檔案拖曳到這裡 ·

每個檔案最大 95 MB· 最多 20 個檔案· 30 分鐘後刪除

輸出

檔案會在我們的伺服器上處理,並於 30 分鐘後刪除。

使用方式

  1. 1

    加入 JSON 檔案

    上傳 API 回應、匯出的設定檔或產生的 manifest(.json),最多 20 個檔案,每個檔案最大 95 MB。每個檔案都必須包含一個有效的 JSON 值。

  2. 2

    保留預設設定

    轉換為已預設選取 YAML。一般設定檔不需要再調整其他項目,輸出會使用兩個空格縮排。

  3. 3

    轉換並提交

    按下轉換為 YAML →,下載 .yaml 檔案,在後續維護者需要的地方加上註解,然後提交。

解答

如何將 JSON 轉成 YAML?

上傳 .json 檔案,按下轉換為 YAML →。物件會變成縮排的 key: value 區塊,陣列會變成以破折號開頭的清單,YAML 可能誤判的字串則保留引號。

為什麼設定檔要從 JSON 轉成 YAML

大多數 JSON 是由軟體產生的:API 回應、設定匯出檔、產生器的輸出。大多數 YAML 則由人維護。這個轉換通常代表資料不再只是機器輸出,而是變成團隊要負責的內容,例如提交到 Git 的部署 manifest、CI 流程,或一組 Ansible 變數。

典型情況:你呼叫雲端 API,得到一份 200 行的資源 JSON 描述,並想把它當作基礎設施程式碼保存。轉換後的檔案沒有大括號和逗號,改一行就只會產生一行差異,也能在註解中說明奇怪的值。測試資料和由非開發人員編輯的翻譯檔也一樣適用。如果你需要的是平面表格,用於試算表或報告,JSON 轉 CSV 會更合適。

使用 YAML 設定檔的工具

轉換後的 YAML 通常用在哪裡
機構規定來源
GitHub Actions工作流程放在 .github/workflows,副檔名為 .yml 或 .yamlGitHub Docs
GitLab CI/CD流程定義在儲存庫根目錄的 .gitlab-ci.ymlGitLab Docs
Docker Compose服務在 compose.yaml 中描述(舊名 docker-compose.yml)Docker Docs
AnsiblePlaybook 與變數檔以 YAML 撰寫Ansible Docs
KubernetesManifest 可使用 JSON 或 YAML;文件與 Helm chart 使用 YAMLKubernetes

含特殊值的 JSON 轉 YAML 範例

{"name":"訂單服務","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"} 的 YAML 輸出
name: 訂單服務
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"

YAML 的優點

  • 可用 # 加上註解
  • 程式碼審查中的差異更短
  • 大多數行不需要大括號、逗號或引號
  • 可用 | 區塊純量寫多行文字

注意事項

  • 縮排即語意,多一個空格就會改變結構
  • 不允許用 Tab 縮排
  • 沒有引號的字串可能被讀成數字或布林值
  • 剖析器比 JSON 慢,也較不一致

這個範例說明了為什麼單純取代大括號並不夠。版本 1.10 在 JSON 中是字串;若在 YAML 中不加引號,會被讀成數字 1.1。NO 是挪威的 ISO 代碼,在 PyYAML 等 YAML 1.1 剖析器中會被讀成 false。兩者都保留引號,而真正的數字與布林值則不加引號。

JSON 與 YAML 比較

JSON

JavaScript 物件表示法

JSON 是用於結構化資料的輕量文字格式,由 Douglas Crockford 在 2000 年代初期推廣,並標準化為 RFC 8259 和 ECMA-404。它以簡單易讀的語法表示物件、陣列、字串、數字、布林值和 null。幾乎所有程式語言都把它當作網頁 API、設定檔和應用程式間資料交換的預設格式。它沒有內建註解、日期或結構描述,大型巢狀檔案不用檢視器很難閱讀。

壓縮方式
–
透明度
–
動畫
–
推出年份
2001 · Douglas Crockford
JSON 轉檔工具

YAML

YAML

YAML(「YAML Ain't Markup Language」)是 2001 年首次發布、對人類友善的資料格式。它以縮排取代括號,支援註解,並且是 JSON 的超集。Docker Compose、Kubernetes、GitHub Actions 與許多應用程式都廣泛用它來做設定。由於依賴空白字元,多一個或少一個空格就可能出錯,而且某些值(例如「no」或日期)可能被意外解讀。

壓縮方式
–
透明度
–
動畫
–
推出年份
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
YAML 轉檔工具

當產生的資料或 API 資料必須變成由人維護、在 pull request 中審查並能加上註解的設定檔時,人們會把 JSON 轉成 YAML。

JSON 轉 YAML 常見問題

JSON 本身就是有效的 YAML 嗎?

在 YAML 1.2 中是的:2009 年的修訂版在設計上讓每份 JSON 文件同時也是 YAML 文件。你可以把 JSON 貼進 .yaml 檔案,大多數工具都能接受。轉換的重點在於可讀性:沒有大括號、引號和逗號的區塊風格,才是審查者與下一位維護者預期的格式。

為什麼 YAML 裡有些值會加上引號?

因為沒有引號的話,YAML 會把它們讀成其他型別。像 1.10 這樣的版本字串會變成數字 1.1,而 yes 或 off 在較舊的剖析器中可能變成布林值。看起來像數字、日期或布林值的字串需要加上引號才能維持為字串,所以謹慎的轉換會保留這些引號。

轉換後可以加入註解嗎?

可以,這也是許多人轉換的原因。在行尾或單獨一行寫 # 再接上你的說明即可。JSON 無法說明某個值為何這樣設定,YAML 可以,讓審查與交接更容易。

為什麼 YAML 出現 Tab 字元錯誤?

YAML 規範禁止用 Tab 縮排,只有空格有效。轉換器輸出的是空格,但編輯器若設為插入 Tab,下次編輯時可能破壞檔案。請把編輯器設定為在 .yaml 檔案中使用空格。

Kubernetes 能接受轉換後的 manifest 嗎?

kubectl 同時能讀取 JSON 和 YAML,所以兩種寫法的資料相同;YAML 版本只是多數文件、Helm chart 和程式碼審查慣用的格式。之後若需要把 JSON 還原,用於 jq 或 API 呼叫,可以用 YAML 轉 JSON 轉回來。