結構化資料轉換器

在瀏覽器中本地轉換 YAML、JSON 與 TOML,支援多文件 YAML 與 anchor 解析。

設定資料只會留在你的瀏覽器中。不會上傳、不會呼叫 API,也不會交由後端解析。

轉換工具

支援多文件 YAML,並會先在本地解析 anchors 後再進行轉換。

原始內容

0 / 1,048,576 bytes

轉換結果

你剛測試了結構化資料轉換器 — 試試 JSON 格式化 / 驗證器 →

什麼是結構化資料轉換器?

YAML、JSON 和 TOML 各自在不同的生態系統中成為規範,因為它們優先考慮的事情不同。JSON(ECMA-404)嚴格、機器友善、在網路上無所不在——REST API、GraphQL 回應、npm 的 package.jsontsconfig.json。YAML(規格 1.2.2)人性化,有錨點、別名、多文件串流和重要的縮排——Kubernetes 清單、GitHub Actions 工作流、Ansible Playbook、Docker Compose。TOML(規格 1.0.0)明確型別優先——Rust 的 Cargo.toml、Python 的 pyproject.toml。經典轉換的陷阱:YAML 1.1 的Norway problemNOnofalseoff 和國家代碼 NO 視為布林值 false(Kubernetes 1.16 起使用 YAML 1.2 修復此問題,但舊版解析器仍有陷阱);YAML 的隱含日期轉換將 2024-01-15 轉為 Date 物件——用引號包裹以保持為字串。TOML 區分 datetime2024-01-15T10:30:00Z)、local-datetimelocal-datelocal-time 為獨立的第一級型別——JSON 沒有這些,在往返轉換時會倒塌成字串。轉換器在輸出前解析 YAML 錨點,並在 JSON 中將 TOML 的有型別日期序列化為 RFC 3339 字串/在 YAML 中序列化為帶引號的字串。

如何使用結構化資料轉換器

選擇FromTo格式。貼上來源或從磁碟Import file。結果即時出現。Swap 按鈕反轉 From-To 並將輸出移入輸入框(用於往返測試——YAML -> JSON -> YAML 應該是冪等的,除了留言遺失和鍵順序)。對於以 --- 分隔的多文件 YAML,轉換器輸出 JSON 陣列(每份文件一個元素)或在反向方向連結回多文件 YAML。錨點(&name)和別名(*name)在轉換前解析——輸出有展開的值,而不是參考。錯誤面板列出解析失敗的行和列,有上下文視窗:JSON 中缺少 ]、YAML 中的縮排破損,或 TOML 中未引用的特殊字元是最常見的三個問題。下載為 .json.yaml.toml——檔案副檔名符合目標格式,編輯器套用正確的語法反白。

為什麼設定格式轉換很重要

格式選擇表明意圖。JSON 用於 wire-format和需要明確解析的工具——每個 {[ 確實是一件事。YAML 用於人類編寫配置和交叉參考(錨點避免在服務間複製貼上環境變數區塊)。TOML 用於明確型別的配置,其中不慎混淆字串和日期是不可接受的(Cargo.toml 不會容忍 Norway problem)。遷移專案時,轉換會揭示不匹配:YAML 檔案若使用 YAML 1.1 解析器的 country: NO 會變成 JSON 的 country: false,悄悄破壞下游系統。TOML 日期轉換為 JSON 會失去其型別——往返回 TOML 會產生字串,破壞期望 datetime 的配置驗證器。轉換器透過盡可能保留所有三種格式的型別資訊來解決這個問題,使輸入 = 輸出——除了留言(YAML 和 TOML 支援但 JSON 不支援)。

常見問題

支援多文件 YAML 嗎?

支援。如果輸入包含以 --- 分隔的多個 YAML 文件,轉換器會保留這個結構,並可輸出為 JSON 陣列或 YAML 多文件格式。

為什麼多文件 YAML 不能直接轉 TOML?

TOML 較適合表達單一物件文件。如果您貼上多份 YAML,建議先轉成 JSON,或先合併後再輸出為 TOML。

YAML anchors 與 aliases 會被解析嗎?

會。轉換器會先在瀏覽器本地解析 anchors 與 aliases,再產生輸出結果。