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の7種類を区別し、JSONの「数値が整数か浮動小数点か」のような曖昧さや、YAML 1.1のNorway問題(NOがブールfalseにパースされる)がありません。
TOMLの中核構造は4つの要素で構成されます。①キー値ペア(key = value)は基本設定項目を表現。②表(Table)は [name] で名前付きグルーピングを宣言し、ネスト([a.b.c])をサポート。③表配列(Array of Tables)は [[name]] で同型オブジェクトのリストを表現し、複数環境設定、プラグインリスト、依存項目リストで多用。④配列(Array)は基本型のインライン([1, 2, 3])と複数行の2つの記法をサポート。本ツールは変換時にJSON構造を智能的に認識し、最適なTOML構文を自動選択します。
JSONをTOMLに変換する一般的な動機はいくつかあります。①プロジェクトがNode.jsエコシステムからRust/Pythonの新エコシステムへ移行する際、設定形式をTOMLに統一する必要がある。②チームが散在するJSON設定をTOMLで統一管理することを決定し、TOMLの[section]階層でJSONの深いネストによる可読性の負担を排除。③YAMLをTOMLに置き換え、インデントに起因する奇妙なバグを除去。④CI/CDで上流から配信されたJSONメタデータをTOMLに変換し下流ツールへ注入。本ツールはこれらすべてのシーンの変換ニーズをカバーします。
変換プロセスの本質は構文木マッピングです。JSON.parse()がテキストをJavaScriptオブジェクト(AST)に解析し、各ノードを再帰的に走査します。文字列、数値、真偽値、nullを対応するTOMLスカラーにマッピング。配列は要素型によりインライン配列または表配列に分類。ネストオブジェクトは表またはサブテーブルにマッピング。最後にTOML仕様に従いテキストを出力。この構造化マッピングにより、変換結果が構文上100%合法であることが保証され、フォーマットエラーは発生しません。
ユースケース
- Rust プロジェクト向けに Cargo.toml の下書きを作るとき
- Python プロジェクトで pyproject.toml 用の設定を組み立てるとき
- Hugo、Deno、Prettier などの設定を JSON から TOML へ移行するとき
- CI/CD や DevOps の設定形式をチーム内で TOML に統一したいとき
- 既存の JSON 設定を TOML と比較し、どちらが読みやすいか検討したいとき
- TOML のネストテーブルやテーブル配列の書き方を実例で学びたいとき
使い方
- 左側のエディタに JSON を貼り付けるか、.json / .txt ファイルを読み込みます。必要なら「サンプル」で例を表示できます
- ツールが JSON を解析し、右側に TOML v1.0 形式の設定コードをリアルタイムで生成します
- 構文エラーがある場合はエラーメッセージを確認し、必要に応じて JSON 修復ツールで整えてから再変換します
- 結果をコピーするか、config.toml としてダウンロードしてプロジェクトに取り込みます
特徴
- TOML v1.0 準拠の出力で、Cargo、Poetry、Hugo、Prettier など TOML 対応ツールにそのまま使えます
- 多層の JSON オブジェクトを [a] や [a.b.c] の TOML テーブルに自動で整理し、階層構造を読みやすく保てます
- オブジェクト配列は [[items]] 形式のテーブル配列へ自動変換され、設定リストや複数環境の定義に向いています
- ダブルクォート、バックスラッシュ、改行、タブなどの特殊文字を TOML の規則に沿って安全にエスケープします
- 文字列、数値、真偽値、null を適切な TOML 型に割り当て、null は空文字列 "" に変換します
- 左側に JSON を貼り付けるだけで右側に TOML を即時生成し、ボタンを押さずに結果を確認できます
- ネストオブジェクト、配列、テーブル配列を含むサンプルをワンクリックで読み込み、変換結果をすぐ試せます
- .json / .txt ファイルの読み込みに対応し、変換後は config.toml としてダウンロードできます
- PC では左右パネルの幅をドラッグで調整でき、直近 200 件の履歴も自動保存されます
- 変換後に 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)に最適で、文法が簡潔で曖昧さがなく、インデントの罠がありません。3者に絶対的な優劣はなく、シーンに合わせることが重要です。設定ファイルはTOML、CI/CD設定はYAML、APIデータはJSONを推奨します。
ネストしたJSONオブジェクトはTOMLでどう表現されますか?
TOMLは表(Table)でネスト構造を表現します。1階層のネスト例:{"database": {"host": "localhost"}} は [database] host = "localhost" に変換されます。多階層ネスト例:{"server": {"ssl": {"enabled": true}}} は [server.ssl] enabled = true に変換されます。本ツールはネスト階層を自動認識して対応する表ヘッダパスを生成するため、手動調整は不要です。
JSON配列はTOMLでどう変換されますか?
TOMLには2種類の配列構文があります。①基本型配列(例:["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キー名に特殊文字(スペース、ドット、日本語、絵文字、予約語など)が含まれている場合、ツールは自動的にダブルクォートで囲んで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]] セグメントに1つのオブジェクトの全フィールドを含み、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は設定ファイルの事実上の標準の1つ。
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 キー、社内アドレスを含む設定でも安心して変換できます。ローカル履歴はあなたのブラウザの localStorage にのみ保存され、キャッシュを削除すれば消去できます。
Authoritative References
- toml-langTOML公式仕様 v1.0
- GitHubTOML GitHubリポジトリ
- WikipediaTOML - Wikipedia
- Rust公式Cargo.tomlフィールドリファレンス
- JSON 圧縮
- CSV to 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