TOMLからJSONへ
RustのCargo.toml、Pythonのpyproject.toml、Hugoのconfig.tomlなど、現代の設定ファイルの世界ではTOMLが至る所で使われています。一方で、JSONしか読めないツールもまだ数多くあります。ここにTOMLを貼り付けると、整形済みのJSONが返ります。[テーブル]セクションはネストしたオブジェクトに、[[テーブルの配列]]ブロックはオブジェクトの配列になり、日付は書かれたままの文字列として通過します。このパーサーはTOMLの日常的なコア部分をカバーしています。実際の制限(複数行の値、インラインテーブル、ドット付きキー)は下で包み隠さず説明します。
変換の仕組み
-
1
TOMLを貼り付ける
入力欄にテキストを入れて「JSONに変換」を押します。行全体の#コメントは自動的にスキップされます。
-
2
テーブルはオブジェクトになる
`[server.database]`というヘッダーは、ドット区切りの名前ごとに1階層ずつネストしたJSONオブジェクトになります。
-
3
テーブルの配列は配列になる
`[[users]]`ブロックは、ブロックごとに1つのオブジェクトを持つJSON配列を組み立てます。
-
4
スカラー値は型を保つ
引用符付き文字列、単純な10進の整数と小数、true/falseはネイティブなJSON型になります。日付は書かれたとおりの文字列のままです。
-
5
JSONをコピーする
結果はスペース4個のインデントで整形され、キーは元の順序のまま、すぐにコピーできます。
型の対応表
| TOMLの値 | JSONの値 | 例 |
|---|---|---|
| 文字列(基本・リテラル) | 文字列 | "hello" → "hello" |
| 整数(単純な10進) | 数値 | 42 → 42 |
| 小数(単純な10進) | 数値 | 3.14 → 3.14 |
| 真偽値 | 真偽値 | true → true |
| 配列(1行) | 配列 | [1, 2, 3] → [1, 2, 3] |
| キーを持つテーブル | オブジェクト | [server] + port = 8080 → "server": {"port": 8080} |
| テーブルの配列 | オブジェクトの配列 | [[users]] + name = "alice" → "users": [{"name": "alice"}] |
| 日時 | 文字列(書かれたまま) | 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z" |
出力は常にスペース4個のインデントで整形されるため、配列とオブジェクトは複数行に展開されます。上の表は読みやすさのために値を1行で示しています。キーの順序はTOMLに書かれたとおりに保たれます。
変換例
title = "My App"
[server]
host = "localhost"
port = 8080
[[users]]
name = "alice"
admin = true
は次のように変換されます。
{
"title": "My App",
"server": {
"host": "localhost",
"port": 8080
},
"users": [
{
"name": "alice",
"admin": true
}
]
}
対応しているTOMLと実際の制限
対応: ドット付きセクション名を含む[テーブル]ヘッダー、[[テーブルの配列]]、1行のkey = valueペア、\n・\t・\"エスケープ付きの基本文字列"..."、リテラル文字列'...'、単純な10進の整数と小数、true/false、1行の配列(ネスト可)、行全体の#コメント、文字列として通過する日付。
非対応の項目と、代わりにどうすべきか:
- 複数行文字列(
"""または''')と複数行配列はパースエラーで停止します。先に値を1行にまとめてください。 - インラインテーブルは展開されません:
point = { x = 1, y = 2 }はオブジェクトではなく文字列"{ x = 1, y = 2 }"として出力されます。独立した[point]セクションに書き換えてください。Cargo.tomlの依存関係行serde = { version = "1.0" }が典型例です。 - ドット付きキーが等号の左にある場合、1つのフラットなキーのままです:
server.host = "a"はネストせずにキー"server.host"を生成します。代わりに[server]ヘッダーを使ってください。ヘッダー内のドット付き[section.names]は正しくネストします。 - 値の後ろのコメントは除去されません:
port = 8080 # mainは文字列"8080 # main"になります。コメントは独立した行に置いてください。 - 単純な10進以外の数値形式は認識されません:
1_000、0xFF、5e2、+99、inf、nanは引用符付き文字列として出てきます。1000、255、500、99と書いてください。 - 基本文字列内の
\uXXXXエスケープはデコードされません。代わりに実際の文字を貼り付けてください。
完全なTOML 1.0ドキュメントには、toml2jsonのようなコマンドライン変換ツールを使うか、Pythonのtomllibで読み込んでからJSONを書き出してください。
便利な使いどころ
- デバッグ中にTOMLの断片をJSONとして素早く確認する。
- JSONしか受け付けないリンター、スクリプト、インベントリツールにシンプルな設定値を渡す。
- 手書きしやすいTOMLのメモからテスト用のJSONフィクスチャを生成する。
- 小さくフラットな設定ファイルの移行。Hugoの
config.tomlの多くがこれに当たります。
往復変換に関する注意
- コメントは決して残りません。JSONにはコメント構文自体がありません。
- 日付は文字列のままです。後続のコードで日付オブジェクトに再変換する必要があります。
- 大きな数値: JSONテキスト内では整数は64ビット値として保たれますが、JavaScript側の利用者は2^53を超えると精度を失います。ナノ秒タイムスタンプや数値IDに注意してください。
- キーの順序はこのコンバーターでは書かれたまま保持されます。他のJSONツールは再出力時にキーを並べ替えることがあります。
逆方向
JSON → TOMLの方が難路です。JSONには、TOMLに存在しないか扱いが異なる構造(深い無名ネスト、null)があるためです。往復変換のシナリオでは、たいていTOML側での手直しが必要になります。
よくある質問
いいえ。JSONにはコメント構文がないため、行全体の#コメントは単にスキップされます。注意点として、値の後ろに置いたコメントは除去されず、port = 8080 # main は文字列 “8080 # main” になります。変換前にコメントを独立した行へ移してください。
いいえ。日常的なコア部分に対応しています。ドット付きセクション名のテーブル、テーブルの配列、1行のkey = valueペア、引用符付き文字列、単純な10進数、真偽値、1行の配列、行全体のコメントです。複数行の文字列と配列、インラインテーブル、ドット付きキー、1_000や0xFFのような数値形式には対応していません。仕様に完全準拠したドキュメントにはtoml2jsonやPythonのtomllibなどのCLIツールをお使いください。
一般的な設定ファイルなら瞬時に変換されます。変換は当社のサーバーで実行されるため、巨大なドキュメントはリクエストサイズの上限に制約されます。数メガバイト級のTOMLにはコマンドライン変換ツールの方が適しています。
はい。このコンバーターはサーバーサイドで動作します。TOMLはHTTPSで当社サーバーへ送られ、そこで変換され、同じレスポンスで戻ります。内容はその後保存されず、匿名の利用回数カウントだけが記録されます。パスワードやAPIキーなどの秘密情報は貼り付けないでください。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
JavaScript圧縮ツール
変数名のリネーム、空白の削除、デッドコードの除去、定数畳み込みでJavaScriptを圧縮し、より小さなバンドルを作成します。
FPS カウンター
requestAnimationFrame でブラウザーの FPS を測定。平滑化、最小・最大フレームレート、警告しきい値、任意のグラフに対応。ローカルで動作し、アップロードも API も不要です。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
プレースホルダー画像ジェネレーター
1〜4000 pxの画像に色と文字を設定し、PNGで保存できます。外部URLとHTMLもコピーできます。
このツールは他の言語でも利用できます
- TOML zu JSON [DE]
- TOML para JSON [PT]
- TOML till JSON [SV]
- TOML naar JSON [NL]
- TOML เป็น JSON [TH]
- TOML en JSON [FR]
- TOML a JSON [ES]
- TOML sang JSON [VI]
- TOML ke JSON [ID]
- TOML to JSON [KO]
- من TOML إلى JSON [AR]
- TOML na JSON [PL]
- TOML'dan JSON'a [TR]
- TOML 至 JSON [ZH]
- TOML to JSON [EN]
- TOML in JSON [IT]
- TOML в JSON [RU]