實用工具
輸入
結果
結果會顯示在這裡。Cargo.toml、pyproject.toml、netlify.toml 和許多 Hugo 網站都是用 TOML 寫的,而你遲早會需要把其中某個檔案轉成 JSON——用 jq 查詢、交給指令碼處理,或依結構比較兩個版本。這裡使用 smol-toml 進行雙向轉換,它是一個小巧的 TOML 1.1 解析與序列化函式庫,通過官方 toml-test 測試套件的大部分項目;規格本身維護在 toml-lang/toml。語法錯誤會指出列號與欄號,遇到其中一種格式無法表達的內容時,轉換會停下並指出確切的鍵,而不是悄悄遺失資料。
它是怎麼運作的
- 行內表格、點號鍵以及 [[bin]] 這類表格陣列,都會變成一般的巢狀 JSON 物件與陣列。
- 帶時差的日期時間會變成 ISO 8601 字串;本地日期與時間則保留原本的寫法,例如 1979-05-27。
- JSON 的 null 在 TOML 中沒有對應,所以轉換器會指出這個鍵,而不是像 smol-toml 原本那樣直接丟掉它。
- 轉成 TOML 時,巢狀物件會變成 [table] 區段,物件陣列會變成 [[array]] 表格。
你的資料去了哪裡
哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。
本工具免費且免登入,執行結果只存在於你目前的頁面裡,不會被儲存到任何地方。
它要花多少
本工具完全免費,不需要登入,也不消耗點數。
常見問題
- 為什麼 null 值會讓轉換停止?
- TOML 沒有 null。悄悄略過這個鍵的轉換器,會產生看起來正確、行為卻不同的檔案,所以這裡會拒絕轉換,並以 $.package.homepage 這樣的路徑告訴你位置。移除這個鍵,或給它一個真正的值,例如空字串或 false。
- 為什麼我的日期時間變回了帶引號的字串?
- JSON 沒有日期型別,所以 TOML 日期時間轉成 JSON 時會變成字串。再把那份 JSON 轉回來,得到的是帶引號的字串,而不是不加引號的 TOML 日期,因為 JSON 中沒有任何資訊表示它曾經是日期。如果使用端需要真正的 TOML 日期時間,請移除引號。
- 註解和鍵的順序會保留嗎?
- TOML 轉 JSON 時,鍵的順序會保留。JSON 轉 TOML 時,每個表格的一般鍵會寫在它的子表格之前,因為在 TOML 中,寫在 [table] 標頭之後的鍵屬於那個表格。註解不會保留:解析 TOML 時註解就被捨棄了,因為 JSON 沒有地方放它們,所以經過 JSON 來回轉換一次,資料還在,說明卻沒了。請把 TOML 檔案當作唯一的資料來源,再從它產生 JSON。
- 非常大的整數會怎樣?
- TOML 整數是 64 位元,而 JavaScript 數字只在 2^53 以內才精確。解析器不會把 9007199254740993 捨入成另一個數字,而是回報錯誤。像雪花 ID 這類的值,存成字串比較安全。同樣地,inf 和 nan 也會被拒絕,因為 JSON 無法表示它們。
背後的開源專案
本工具執行在 squirrelchat/smol-toml 之上,以 BSD-3-Clause 授權發布。如果你需要在自己的程式裡實作同樣的能力,直接用這個函式庫。
squirrelchat/smol-toml也常被稱作
- toml 轉 json
- json 轉 toml
- toml 轉換器
- toml 線上解析
- cargo.toml 轉 json
- pyproject.toml 轉 json