TOML 格式化
格式化、驗證和美化 TOML 資料
關於 TOML 格式化
TOML Formatter 根據 TOML 1.0 規格驗證並整理你的設定檔。TOML 的設計目標是消除歧義——每個值有明確的型別、縮排不影響結構、以表格為基礎的層次直接對應 hash map。這個工具讓你在推壞掉的 Cargo.toml 到 crates.io 或是因為日期格式打錯而讓 Hugo 建置中斷之前,先抓到語法錯誤。
常見使用情境
常見問題
為什麼選 TOML 而不是 YAML?
TOML 不靠縮排決定結構,所以不會有 tab/空格問題或縮排跑掉的情況。型別是明確的——加引號的字串永遠是字串,整數永遠是整數,日期永遠是日期。YAML 隱性型別轉換和縮排敏感讓大型設定檔容易出錯。TOML 更簡單,解析和推理都更直觀。
什麼是 array of tables(表格陣列)?
[[table]] 定義一個 table 值的陣列,等同於 JSON 的物件陣列。每個 [[dependencies]] block 會往陣列裡追加一筆資料。這就是 Cargo.toml 列多個 [[example]] 或 [[bench]],以及 Hugo front matter 列多個 [[params.menu]] 的方式。
什麼是 inline table(行內表格)?
Inline table——{key = "val", other = 1}——把整個 table 寫在一行。適合短小緊湊的值,且必須放在單行內,不能跨行。簡單的情況可以用 inline table,複雜的內容還是用一般 table。
TOML 怎麼處理日期與時間?
TOML 有四種原生時間型別:帶時區的 datetime(2024-01-15T09:00:00Z)、本地 datetime(無時區)、本地 date(2024-01-15)、本地 time(09:00:00),格式遵循 RFC 3339。沒有其他設定格式有第一級的 datetime 型別;JSON 和 YAML 都要用字串,然後靠消費端自己解析。
什麼時候 JSON 還是更好的選擇?
機器對機器的資料交換用 JSON 更合適:各語言普遍支援、規格更簡單、不需要特定的 TOML parser。TOML 的優勢——支援註解、表達力強的 table、原生日期型別——在人工維護的設定檔裡最有價值。如果檔案是由機器產生並消費,用 JSON 就好。