UltKit

YAML 轉 JSON 轉換器

把 YAML 設定檔、OpenAPI 規格與 CI 檔案轉成任何剖析器、API 或結構描述驗證器都能讀取的 JSON。上傳 .yaml 或 .yml 檔案,下載縮排排版的 JSON。

資料轉換器

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

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

輸出

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

使用方式

  1. 1

    上傳 YAML 檔案

    加入 .yaml 或 .yml 檔案,一次最多 20 個,每個檔案上限 95 MB。檔名會保留,產生的 JSON 檔案使用相同檔名,只是副檔名不同。

  2. 2

    選擇縮排或精簡格式

    格式化排版預設為開啟,會將 JSON 縮排,方便閱讀與程式碼審查。若需要貼進請求本文的單行檔案,請在進階設定中關閉。

  3. 3

    轉換並使用

    按下轉換為 JSON,下載後再把檔案交給 API、驗證工具或需要它的指令碼。

開發者為什麼要把 YAML 轉成 JSON

YAML 是為人而寫的:用縮排取代大括號,可以加註解,多數字串也不需要引號。因此 Kubernetes 清單、GitHub Actions 工作流程、Docker Compose 檔案,以及團隊手動編輯的 OpenAPI 規格,都採用這種格式。JSON 則是為程式而寫的。每種語言的標準函式庫都有 JSON 解析器,瀏覽器也原生支援,大多數 HTTP API 也只接受它。

所以轉換發生在系統的交界處。平台工程師把清單交給只讀 JSON 的 jq 處理;後端開發人員把 OpenAPI 規格送進要求 JSON 的程式碼產生器;測試人員把以 YAML 撰寫的測試資料載入 JavaScript 測試套件。在這些情況下,YAML 仍是資料的真正來源,JSON 只是建置產物。如果要處理的是整個資料夾的資料饋送或匯出檔,而不是設定檔,XML 轉 JSON 能以同樣方式處理較舊的標記格式。

YAML 與 JSON 如何一路共同發展

Clark Evans 首次提出 YAML
2001
YAML 1.2 讓 JSON 成為 YAML 的子集
2009
RFC 8259,目前的 JSON 標準
2017
YAML 1.2.2 修訂版發布
2021

YAML 專屬功能轉成 JSON 後會怎樣

錨點(&defaults)與其別名(*defaults)讓 YAML 可以重複使用同一個區塊。JSON 沒有參照機制,因此每個別名都會被替換成該錨點區塊的完整副本。

  • JSON 可能比 YAML 明顯更長
  • 合併鍵(<<: *defaults)會以相同方式展開
一份簡短的 YAML 設定檔,轉成格式化排版的 JSON
{
  "service": "billing",
  "replicas": 3,
  "ports": [8080, 9090],
  "env": {
    "LOG_LEVEL": "info",
    "REGION": "NO"
  }
}

YAML 與 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 轉檔工具

JSON

JavaScript 物件表示法

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

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

當為人撰寫的設定檔或規格必須交給機器處理時,人們就會把 YAML 轉成 JSON,例如 API 請求、結構驗證工具,或沒有 YAML 解析器的工具。

YAML 轉 JSON 常見問題

YAML 和 JSON 存的資料相同,為什麼還要 YAML 轉 JSON?

因為許多工具只能解析其中一種。每種程式語言和瀏覽器都內建 JSON 讀取功能,YAML 則需要額外的函式庫。REST API 的請求本文、JSON Schema 驗證工具、jq,以及 package.json 或瀏覽器擴充功能的 manifest.json 等檔案,都要求使用 JSON。

YAML 裡的註解會怎麼處理?

註解會被捨棄。RFC 8259 並未為 JSON 定義註解語法,以 # 開頭的行無處可放。建議把 YAML 檔案當作附有說明的原始檔,JSON 則視為隨時可以重新產生的副本。

為什麼 NO 或 off 變成了 false?

遵循 YAML 1.1 的解析器會把 yes、no、on、off 讀成布林值,所以像挪威的國碼 NO 可能變成 false。YAML 1.2 只把 true 和 false 視為布林值,但並非每個工具都遵循。請在 YAML 中為這類值加上引號,例如 "NO",轉成 JSON 後就會維持為字串。

可以轉換用 YAML 寫的 CloudFormation 範本嗎?

AWS CloudFormation 兩種格式都支援,但 !Ref、!GetAtt 這類簡短標籤只存在於 YAML。JSON 範本必須寫成完整函式,例如 {"Ref": "MyBucket"} 或 {"Fn::GetAtt": [...]}。轉換前請先把簡短標籤改寫成完整形式,JSON 範本才會有效。

要反過來把 JSON 轉成 YAML 怎麼做?

請使用 JSON 轉 YAML。當 API 回應或產生的檔案需要變成儲存庫中易讀的設定檔時,通常就是這個方向。