資料交換:YAML To JSON
使用 yaml 庫(YAML 1.2 core schema)解析一個 YAML 文件,並輸出為縮排的 JSON。註釋會被丟棄,錨點和別名會被展開,yes 或 2024-01-01 這樣的值保持為字串。
把用 YAML 寫的設定傳送給只接受 JSON 的 API 或 JSON Schema 校驗器。
適用場景
- 把用 YAML 寫的設定傳送給只接受 JSON 的 API 或 JSON Schema 校驗器。
- 確認 CI 或 Kubernetes 檔案中值的實際型別,例如版本號是字串還是數字。
使用方法
- 貼上單個 YAML 文件,或載入 .yaml/.yml 檔案。
- 如果出現錯誤,在報告的行檢查縮排、重複的鍵和 --- 分隔符。
- 檢查 JSON 輸出中的字串與數字,然後複製。
YAML 輸入
# deployment settings service: billing-api replicas: 2 version: "1.10" enabled: yes ports: - 80 - 443 env: LOG_LEVEL: info
JSON
{
"service": "billing-api",
"replicas": 2,
"version": "1.10",
"enabled": "yes",
"ports": [
80,
443
],
"env": {
"LOG_LEVEL": "info"
}
}功能與限制
解析在瀏覽器中進行。輸出始終是 2 空格縮排的 JSON;沒有壓縮選項。
遵循 YAML 1.2 規則:yes/no/on/off 是字串而不是布林值,不帶引號的日期保持為字串。0o17 是八進位制(15)。
合併鍵(<<: *anchor)不會被合併,而是作為字面量鍵 "<<" 出現。同一對映中的重複鍵會報錯。
超過 2^53 的整數在 JSON 中會丟失精度。請在 YAML 中給長 ID 加引號。
FAQ
能轉換用 --- 分隔的多文件檔案嗎?
不能。多個文件會導致錯誤 "Source contains multiple documents"。請一次貼上一個文件。開頭單獨一個 --- 沒有問題。
為什麼 enabled: yes 在 JSON 中是字串?
解析器遵循 YAML 1.2,只有 true 和 false 是布林值。如需 JSON 布林值,請寫 true/false。
支援錨點和別名嗎?
支援。像 *base 這樣的別名會被替換為錨點值的副本。但 YAML 1.1 的合併鍵 << 不會生效。