JSON 轉 TOML
免費線上JSON轉TOML轉換器,自動將JSON物件轉為TOML v1.0規範設定,支援巢狀表格([section])、子表格([a.b])和表格陣列([[items]]),可直接產生Cargo.toml/pyproject.toml,所有處理本機完成。
相關推薦
什麼是 TOML?為什麼要把 JSON 轉成 TOML?
TOML 全稱 Tom's Obvious, Minimal Language(湯姆的明顯最小化語言),是由 GitHub 共同創辦人 Tom Preston-Werner 在 2013 年發佈的設定檔格式。它的設計目標是:語法明顯(obvious)、最小化(minimal)、易於人類閱讀、明確無歧義。TOML 1.0 在 2021 年成為穩定版本(toml-lang/toml),目前已成為 Rust 生態 Cargo、Python PEP 621(pyproject.toml)、Hugo、Prettier、Deno、Taplo 等眾多工具的預設定檔格式。
TOML 在設定檔場景相比 JSON 和 YAML 有幾個明確優勢:①沒有 YAML 的縮排陷阱——YAML 用縮排表示層級,縮排錯誤會導致設定含義完全改變(比如 list 變成 string),TOML 用 [table] 顯式宣告層級,不存在歧義;②比 JSON 更適合設定——JSON 的引號、大括號在複雜設定中非常囉嗦,TOML 的 key = value 寫法更清爽,註解原生支援;③類型系統明確——TOML 區分 integer/float/string/boolean/datetime/array/table 七種類型,沒有 JSON 那種「數字到底是整數還是浮點」的歧義,也沒有 YAML 1.1 的 Norway 問題(NO 解析為布林 false)。
TOML 的核心結構由四種元素組成:①鍵值對(key = value)表示基礎設定項;②表格(Table)用 [name] 表示命名分組,支援點號巢狀([a.b.c]);③表格陣列(Array of Tables)用 [[name]] 表示同構物件的清單,常用於多環境設定、外掛清單、相依項清單;④陣列(Array)支援基礎類型內聯([1, 2, 3])和多行兩種寫法。本工具在轉換時會智慧識別 JSON 結構,自動選用最合適的 TOML 語法。
JSON 轉 TOML 的常見動機有幾種:①專案從 Node.js 生態遷移到 Rust/Python 新生態,設定格式需要統一為 TOML;②團隊決定把散落的 JSON 設定統一管理到 TOML,利用 TOML 的 [section] 層級避免 JSON 深層巢狀的閱讀負擔;③用 TOML 替換 YAML 消除縮排導致的詭異 bug;④在 CI/CD 中把上游下發的 JSON 元資料轉成 TOML 注入到下游工具。本工具覆蓋了所有這些場景的轉換需求。
轉換過程本質上是語法樹對映:JSON.parse() 把文字解析為 JavaScript 物件(AST),再遞迴遍歷每個節點——字串、數字、布林、null 對應為對應的 TOML 純量;陣列根據元素類型分為內聯陣列或表格陣列;巢狀物件對應為表格或子表格。最終按 TOML 規範輸出文字。這種結構化對映保證了轉換結果在語法上 100% 合法,不會出現格式錯誤。
適用場景
- Rust 專案準備 Cargo.toml:把 package.json / tsconfig.json 風格的 JSON 設定統一轉為 TOML 格式適配 Cargo 工具鏈
- Python 專案生成 pyproject.toml:將 setup.py / setup.cfg 風格的 JSON 元資料轉為 PEP 621 標準的 pyproject.toml 格式
- Hugo / Deno / Prettier 設定:從 JSON 工具設定遷移到 TOML 設定檔格式,享受 TOML 更清晰的表格結構
- DevOps 工具鏈遷移:在 CI/CD 流水線設定從 JSON 轉為 TOML 時統一格式規範,降低團隊設定維護成本
- 設定檔格式評審:把現有 JSON 設定快速轉成 TOML 做格式對比,方便選擇最適合專案的設定語言
- 學習 TOML 語法:手頭有現成的 JSON 結構,希望直觀看到 TOML 怎麼表示巢狀表格和表格陣列時使用
使用方法
- 貼上 JSON 內容到左側編輯器,或點擊上傳按鈕選擇 .json / .txt 檔案,也可以點擊「範例」載入完整巢狀範例
- 工具即時解析 JSON 並按 TOML v1.0 規範生成右側設定程式碼,鍵值對、巢狀表格、表格陣列自動用對應語法
- 如 JSON 有語法錯誤會顯示紅色錯誤提示,可點擊跳轉到 JSON 修復工具自動補全尾逗號等常見錯誤
- 結果滿意後點擊「複製」按鈕複製 TOML 內容,或點擊「下載」儲存為 config.toml 檔案供專案使用
功能特點
- 標準TOML v1.0規範輸出:產生的設定檔可直接用於Cargo、Poetry、Hugo、Prettier等任何支援TOML的工具
- 巢狀物件自動對應:多層巢狀JSON自動轉為TOML表格([a])與子表格([a.b.c]),層級清晰可讀
- 表格陣列智慧識別:物件陣列(如資料庫連線清單)自動轉為TOML表格陣列([[items]]),符合官方規範
- 字串安全轉義:雙引號、反斜線、換行、定位字元等特殊字元自動按TOML規則轉義,避免非法字元導致解析失敗
- 類型自動對應:JSON的字串/數字/布林/null自動對應TOML的string/integer/float/boolean,null轉為空字串
- 即時雙向編輯:左側貼上JSON右側即時查看TOML結果,輸入即轉換不用手動點按鈕
- 範例資料快速體驗:一鍵載入巢狀物件+陣列+表格陣列的完整範例,直觀看到TOML生成效果
- 檔案上傳與下載:支援上傳.json/.txt檔案讀取內容,轉換後一鍵下載為config.toml檔案
- 可拖動面板與歷史:PC端左右面板可拖動調整寬度,自動儲存最近200條歷史便於回溯
- 跳轉JSON格式化:轉換後一鍵跳轉到JSON格式化工具繼續美化、校驗或壓縮JSON來源資料
- 純前端本機處理:所有解析與轉換在瀏覽器JavaScript完成,含敏感金鑰、連線字串的設定資料不上傳
常見問題
怎麼把 JSON 轉成 TOML 設定檔?
將 JSON 內容貼到左側輸入框,工具會自動解析 JSON 物件並按 TOML v1.0 規範轉換為設定檔格式。鍵值對變成 key = value,巢狀物件變成 TOML 表格([section])與子表格([a.b]),陣列按內容自動分為內聯陣列或表格陣列([[items]])。點擊範例按鈕可載入巢狀範例查看效果,轉換結果可直接下載為 config.toml 檔案用於專案設定。
TOML 和 YAML、JSON 各自適合什麼場景?
JSON 適合 API 資料交換和前後端資料傳輸,是 REST 介面的事實標準;YAML 適合複雜資料結構和 CI/CD 設定(GitHub Actions、Ansible、Kubernetes),可讀性高支援註解和多文件;TOML 適合明確的設定檔場景(Rust/Cargo、Python pyproject、Hugo、Prettier),語法簡潔、歧義少、無縮排陷阱。三者沒有絕對的優劣,關鍵是匹配場景——設定檔推薦 TOML,CI/CD 設定推薦 YAML,API 資料用 JSON。
巢狀的 JSON 物件在 TOML 中怎麼表示?
TOML 用表格(Table)來表示巢狀結構。一層巢狀如 {"database": {"host": "localhost"}} 轉為 [database] host = "localhost";多層巢狀如 {"server": {"ssl": {"enabled": true}}} 轉為 [server.ssl] enabled = true。本工具會自動識別巢狀層級並生成對應的表頭路徑,不需要手動調整。
JSON 陣列在 TOML 中怎麼轉換?
TOML 區分兩種陣列語法:①基礎類型陣列(如 ["a", "b", 1, 2])轉為內聯陣列 key = ["a", "b", 1, 2],用方括號包裹逗號分隔;②物件陣列(如 [{"name": "primary"}, {"name": "replica"}])轉為表格陣列 [[items]],每個物件前加 [[items]] 表頭,欄位平鋪在下方。本工具會自動判斷陣列類型選用最合適的 TOML 語法。
生成的 TOML 可以直接用於 Cargo.toml 嗎?
可以。工具嚴格遵循 TOML v1.0 官方規範(github.com/toml-lang/toml),輸出的 TOML 可以直接用於 Cargo(Rust 套件管理)、Poetry/pyproject(Python 套件管理)、Hugo(靜態網站)、Prettier、Deno、Taplo 等任何支援 TOML 格式的工具鏈。注意:如果你需要 Cargo.toml 的特定 [package] / [dependencies] 段,請按 Cargo 規範補充相應欄位(name、version、edition、crate 依賴表等)。
JSON 中的 null 值會轉成什麼?
TOML 沒有 null 類型,因此 JSON 的 null 會被轉換為一個空字串 ""(最常見的等價表達)。如果你的 TOML 消費者對 null 欄位有特殊要求(比如 [dependencies] 裡某個 crate 的 optional 欄位),轉換後請手動調整對應行。
字串裡的雙引號和換行怎麼處理?
TOML 字串必須用雙引號包裹,內部的雙引號、反斜線、換行符(\n)、回車符(\r)、定位字元(\t)都需要按 TOML 規則轉義。本工具會自動處理這些轉義,例如 JSON 中的 He said "Hello" 轉為 TOML 後變成 He said \"Hello\",多行字串中的換行會變為 \n。無需手動轉義,工具輸出可以直接被 TOML 解析器正確讀取。
生成的 TOML 有沒有日期時間類型支援?
本工具輸入僅支援 JSON 文字,而 JSON 標準沒有原生日期時間類型(常見做法是 ISO 8601 字串,如 "2026-01-01T00:00:00Z")。轉換後的 TOML 會把這些值按字串保留(key = "2026-01-01T00:00:00Z")。如果你需要 TOML 原生的 local datetime/offset datetime 類型,請手動把字串改為裸的 TOML 日期字面值(如 2026-01-01T00:00:00)。
本機瀏覽器轉換,設定資料會上傳嗎?
不會。所有 JSON 解析、TOML 生成、字串轉義全部在你的瀏覽器本機 JavaScript 引擎中完成,不會透過網路發送到任何伺服器,斷網也能正常使用。包含資料庫密碼、API 金鑰、內網位址等敏感設定資訊的 JSON 可以放心轉換。
故障排查
JSON 報錯「Unexpected token」怎麼解決?
這是 JSON 語法錯誤。常見原因:①末尾多餘的逗號(trailing comma),如 {"a":1,};②用單引號包裹字串,如 {'a':1}(JSON 必須雙引號);③鍵名沒有雙引號,如 {a:1};④註解 // 或 /* */(JSON 標準不支援)。可以用本站的 JSON 修復工具一鍵自動修復這些常見錯誤,修復後再貼到本工具轉換。
轉換後的 TOML 在 Cargo 中報錯「invalid TOML」?
通常是欄位命名衝突或缺少必填欄位。TOML 解析器對表頭路徑、鍵名重複、字元轉義非常嚴格。請檢查:①同一作用域內是否有重複鍵名;②字串內的特殊字元是否正確轉義(雙引號、反斜線、換行);③巢狀層級是否過深(TOML 1.0 建議不超過 5 層);④是否缺少 [package] 等 Cargo 必填段。本工具輸出的語法 100% 合法,問題一般在使用方(如欄位名是否符合 Cargo 規範)。
物件陣列轉換成了內聯陣列而不是表格陣列?
JSON 陣列只有元素全是基礎類型(字串/數字/布林/null)時才會轉為內聯陣列 ["a","b"],物件陣列(如 [{"name":"x"}])會轉為表格陣列 [[items]]。如果你的物件陣列被錯誤地識別為內聯陣列,說明陣列裡混入了非物件元素。請檢查資料:①是否陣列中混入了字串或數字;②是否巢狀層級被破壞了。
某些鍵名轉換後帶了引號,怎麼去掉?
TOML 規定鍵名只能包含字母、數字、底線和短橫線([A-Za-z0-9_-])。如果 JSON 鍵名包含特殊字元(如空格、點、中文、emoji、保留字),工具會自動用雙引號包裹以保證 TOML 合法,例如 {"my key": 1} 會轉為 "my key" = 1。如果你的下游工具不接受帶引號的鍵名,請手動把 JSON 鍵名改為合法字元(A-Z a-z 0-9 _ -)後再轉換。
大檔案轉換瀏覽器卡頓怎麼辦?
工具做了即時轉換最佳化(輸入即轉換),但超大檔案(>1MB、幾十萬行)仍可能有壓力。建議:①先用 JSON 格式化工具檢查 JSON 是否合法;②分批轉換(如按頂級鍵拆分);③確認瀏覽器有足夠記憶體;④超大設定檔(10MB+)建議用命令列工具如 taplo、tomlq 處理,本工具定位為日常設定場景(KB 到幾百 KB 等級)。
術語表
- TOML
- Tom's Obvious, Minimal Language,一種為設定檔設計的格式語言,語法簡潔無歧義,是 Rust Cargo / Python pyproject / Hugo 的預設設定格式。
- Table(表格)
- TOML 中用 [name] 宣告的命名分組,相當於 JSON 中的物件,支援點號巢狀如 [server.ssl]。
- Array of Tables(表格陣列)
- TOML 中用 [[name]] 宣告的同構物件清單,每個 [[name]] 段包含一個物件的全部欄位,相當於 JSON 的物件陣列。
- Inline Table(內聯表格)
- TOML 1.0 支援的語法,用 { key = value, key = value } 在單行內宣告簡單物件,適合不需要命名的扁平物件。
- Cargo.toml
- Rust 專案的標準設定檔,定義 package 元資料、dependencies、dev-dependencies、features 等,TOML 格式。
- pyproject.toml
- Python 專案的標準設定檔(PEP 621),定義 build-system、project 元資料、dependencies、tool 設定(black/pytest/mypy 等)。
- TOML v1.0
- TOML 1.0 是 2021 年正式發佈的穩定版本,本工具嚴格遵循此規範(github.com/toml-lang/toml/blob/main/toml.md)。
- JSON 巢狀物件
- JSON 中包含其他物件的物件,對應 TOML 的 Table([section])或子表格([a.b.c])。
- TOML 轉義
- TOML 字串內雙引號、反斜線、換行等特殊字元必須用反斜線轉義(\"、\\、\n),本工具自動處理。
- 設定檔(Config File)
- 應用程式啟動時讀取的設定檔案,與程式碼分離便於修改。TOML 是設定檔的事實標準之一。
JSON 類型與 TOML 類型對映表
本工具按以下規則將 JSON 類型轉換為 TOML 類型:
| JSON 類型 | TOML 類型 | TOML 寫法 | 說明 |
|---|---|---|---|
| string | string | key = "value" | TOML 字串必須雙引號包裹 |
| integer | integer | key = 8080 | 整數無小數點 |
| float | float | key = 3.14 | 浮點必須有小數點 |
| boolean | boolean | key = true | TOML 僅小寫 true / false |
| null | string(空) | key = "" | TOML 無 null 類型,轉換為空字串 |
| array[primitive] | array | key = ["a", "b"] | 基礎類型陣列用內聯方括號 |
| array[object] | array of tables | [[items]]\nkey = value | 物件陣列用 [[name]] 表格陣列 |
| object | table | [name]\nkey = value | 物件用 [name] 表格宣告 |
TOML 字串轉義對照表
TOML 字串內必須轉義的特殊字元:
| 原始字元 | TOML 轉義後 | 名稱 | 範例場景 |
|---|---|---|---|
" | \" | 雙引號 | 字串內巢狀雙引號 |
\ | \\ | 反斜線 | Windows 路徑 C:\Users |
換行 | \n | Newline | 多行字串壓縮 |
定位字元 | \t | Tab | 定位字元欄位 |
回車 | \r | Carriage Return | Windows 換行 CRLF |
\b | \b | Backspace | 退格字元 |
\f | \f | Form Feed | 換頁字元 |
U+0000 | \u0000 | Unicode 0 | 控制字元必須用 \u 轉義 |
JSON 轉 TOML 範例對照
複雜結構的 JSON 輸入對應的 TOML 輸出:
| 結構 | 範例 |
|---|---|
| JSON 輸入 | { "name": "app", "port": 8080 } |
| TOML 輸出 | name = "app"
port = 8080 |
| JSON 輸入 | { "server": { "host": "0.0.0.0", "port": 443 } } |
| TOML 輸出 | [server]
host = "0.0.0.0"
port = 443 |
| JSON 輸入 | { "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] } |
| TOML 輸出 | [[hosts]]
ip = "10.0.0.1"
[[hosts]]
ip = "10.0.0.2" |
Privacy & Security
本工具所有 JSON 解析、TOML 生成、字串轉義、檔案讀取全部在瀏覽器本機 JavaScript 中執行,你的 JSON 內容和生成的 TOML 設定不會透過網路發送到任何伺服器,也不會被記錄或分析。包含資料庫密碼、API 金鑰、內網位址等敏感設定資訊的 JSON 可以放心轉換。本機歷史僅保存在你自己瀏覽器的 localStorage 中,關閉瀏覽器或清空快取即可刪除。
Authoritative References
- toml-langTOML 官方規範 v1.0
- GitHubTOML GitHub 倉庫
- WikipediaTOML - 維基百科
- Rust 官方Cargo.toml 欄位參考
- JSON 壓縮
- CSV 轉 JSON
- JSON 轉 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON 扁平化
- JSON 格式化
- JSON 產生器
- JSONPath 查詢
- JSON 合併
- JSON 修復
- JSON Schema 驗證器
- JSON 排序
- JSON Stringify
- JSON 轉 HTML 表格
- JSON 轉 Java
- JSON 轉 Markdown
- JSON 轉 SQL
- JSON 轉 TOML
- JSON 轉 TypeScript
- XML 轉 JSON
- JSON 轉 XML
- YAML 轉 JSON
- JSON 轉 YAML
- JSON 轉 Go
- JSON 轉 Rust
- JSON 轉 Swift
- JSON轉C#
- JSON 轉 C++
- JSON 轉 PHP
- JSON 轉 Python