TOML 與 JSON 互轉指南

JSON(更新於 2026年6月3日)

TOML 簡介

TOML(Tom's Obvious Minimal Language)是一種專為設定檔設計的格式,由 GitHub 共同創辦人 Tom Preston-Werner 建立。它的目標是:

  • 人類可讀,語義明確
  • 能無歧義地對應為雜湊表
  • 比 YAML 更簡單,比 JSON 更友好

基本語法

title = "TOML 範例"

[owner]
name = "張三"
email = "zhang@example.com"

[database]
host = "127.0.0.1"
port = 5432
enabled = true

TOML vs JSON vs YAML 比較

特性 TOML JSON YAML
註解 支援 # 不支援 支援 #
日期型別 原生支援 不支援 不支援
多行字串 支援 不支援 支援
複雜度
解析歧義
主要用途 設定檔 資料交換 設定檔

使用 TOML↔JSON工具 進行轉換

步驟一:選擇轉換方向

開啟 TOML↔JSON工具,選擇「TOML → JSON」或「JSON → TOML」。

步驟二:輸入資料

將 TOML 或 JSON 內容貼到輸入區域。支援直接上傳檔案。

步驟三:轉換

點擊轉換按鈕,結果即時顯示在輸出區域。

步驟四:複製或下載

一鍵複製轉換結果,或下載為對應格式的檔案。

TOML 轉 JSON 的對應規則

基本型別

string = "hello"
integer = 42
float = 3.14
boolean = true

轉為 JSON:

{
  "string": "hello",
  "integer": 42,
  "float": 3.14,
  "boolean": true
}

表(Table)→ 物件

[server]
host = "localhost"
port = 8080

轉為 JSON:

{
  "server": {
    "host": "localhost",
    "port": 8080
  }
}

陣列

ports = [8000, 8001, 8002]

日期時間

TOML 原生支援日期型別,轉為 JSON 時會變為字串:

created = 2026-06-01T10:00:00Z

"created": "2026-06-01T10:00:00Z"

JSON 轉 TOML 的注意事項

  • JSON 中的 null 在 TOML 中沒有對應型別,轉換時需特殊處理
  • JSON 陣列中的混合型別在 TOML 中不合法
  • JSON 的巢狀物件會轉為 TOML 的表(Table)
  • 建議轉換後檢查註解和格式是否滿足需求

常見應用場景

Rust 專案:Cargo.toml

[package]
name = "my-app"
version = "0.1.0"
edition = "2021"

[dependencies]
serde = "1.0"
tokio = { version = "1", features = ["full"] }

需要修改依賴版本時,用 TOML↔JSON工具 轉為 JSON 程式化處理後再轉回。

Python 專案:pyproject.toml

[project]
name = "my-package"
version = "1.0.0"
requires-python = ">=3.8"

[project.dependencies]
requests = "^2.28"
flask = "^2.3"

靜態網站設定

Hugo、Zola 等靜態網站產生器使用 TOML 作為設定格式,經常需要與 JSON 格式互轉。

與其他格式聯動

  1. TOML ↔ YAML:先用 TOML↔JSON工具 轉為 JSON,再用 YAML↔JSON工具 轉為 YAML
  2. 轉換後用 JSON格式化 驗證中間結果
  3. 建議保留原始 TOML 中的註解,轉換後手動補回

常見錯誤

錯誤 原因 解決方法
TOML 解析失敗 語法錯誤 檢查表頭和鍵值對格式
日期格式異常 時區資訊缺失 補充完整的 ISO 8601 格式
null 無法轉換 TOML 無 null 用空字串或刪除該欄位
內行表格式錯誤 語法不規範 改用標準表格式

總結

TOML 是現代設定檔的優秀選擇,與 JSON 的互轉在專案設定管理中非常實用。TOML↔JSON工具 讓你快速完成格式轉換,配合 YAML↔JSON 工具還能實現三種格式間的自由切換。

#TOML#JSON#配置文件#Rust#Python