JSON → TOML 変換ツール
JSON を貼り付けると、ブラウザ内で即座に TOML に変換します。安全な null 処理、トップレベルテーブルの検査、Cargo.toml・pyproject.toml 対応の出力。完全プライベート、アップロード不要。
オプション · 2 スペース
TOML とは何で、なぜ JSON から変換するのか?
TOML(Tom's Obvious, Minimal Language)は、意味が曖昧でなく、人間が読んで編集しやすいように作られた設定ファイル形式です。Rust エコシステム(Cargo.toml)、モダンな Python パッケージング(pyproject.toml)、そして Hugo、Netlify、Poetry、Foundry といったツールの標準設定形式です。JSON はツールや API が生成する普遍的な機械形式です。JSON を TOML に変換することは、構造化データを JSON として持っているが、宛先として人間が編集できる TOML 設定が必要なときによくあります — Cargo.toml や pyproject.toml を生成したり、アプリケーションの JSON 設定を読みやすい設定ファイルに変えたりする場合です。
TOML は JSON より構造化されており、このツールはその厳格さを、謎めいた失敗ではなくガイダンスに変えます:
**1. トップレベルテーブルの強制。** すべての TOML ドキュメントはルートでテーブルです — 裸の配列やスカラーは有効な TOML ではありません。{ トップレベルの配列 } の入力に対して壊れた出力を出す代わりに、このツールはそれを検出し、データをキーの下にラップする正確な方法を教えてくれるので、常に有効な TOML か明確な説明が得られます。
**2. 安全で透明な null 処理。** JSON には null があり、TOML にはありません。ほとんどの変換ツールはクラッシュするか、こっそりデータを破棄します。このツールは明示的です: null 値を持つオブジェクトのキーは削除され、削除されたキーは警告に列挙され、配列内の null — 有効な TOML 表現を持たない — は正確でパスを指すエラーを生成します。データが欠落して驚くことはありません。
**3. 慣用的な TOML 出力。** ネストされたオブジェクトは [テーブル] になり、深くネストされたオブジェクトはドット付きテーブル([tool.ruff])になり、オブジェクトの配列はテーブルの配列([[section]])になります — 実際の Cargo.toml や pyproject.toml ファイルが使う形です。変換は、ゼロ依存で TOML 1.0.0 準拠の smol-toml ライブラリによって支えられています。
**4. 100% ブラウザベースのプライバシー。** あなたの JSON — 資格情報、トークン、内部サービスの詳細を含むかもしれません — がブラウザから外に出ることはありません。アップロードなし、サーバーなし、ログなし。ブラウザのネットワークタブで確認できます。
逆方向が必要ですか?TOML → JSON 変換ツール を使ってください。他の設定形式を扱っていますか?JSON → YAML 変換ツール と YAML → JSON 変換ツール を試すか、まず JSON フォーマッター で JSON 入力を整えてください。各形式にはそれぞれの役割があります: 機械間交換には JSON、人間が編集するアプリやツールの設定には TOML、深くネストされたインフラのマニフェストには YAML。この変換ツールを使えば、コードを一切書かずに JSON から TOML へ移動できます。
// Convert JSON to TOML in Node.js using the smol-toml library
import { stringify } from 'smol-toml';
const data = JSON.parse(`{
"package": { "name": "my-app", "version": "1.0.0" },
"dependencies": { "serde": { "version": "1.0" } }
}`);
// The top-level value must be an object; null values on objects are dropped.
const toml = stringify(data);
console.log(toml);
// [package]
// name = "my-app"
// version = "1.0.0"
//
// [dependencies.serde]
// version = "1.0" 主な機能
ライブ変換
JSON を入力または貼り付けるたびに TOML 出力が即座に更新されます — 「変換」ボタンは不要です。大きな入力(>200KB)は自動的に手動モードに切り替わり、ブラウザの応答性を保ちます。
トップレベルテーブルの案内
TOML ドキュメントはルートでテーブルでなければなりません。JSON のトップレベルが配列やスカラーの場合、ツールがキーの下にラップする正確な方法を教えてくれます — 壊れた出力も当て推量もありません。
安全な null 処理
TOML には null がありません。null 値を持つオブジェクトのキーは削除され、警告に列挙されます。配列内の null は正確でパスを指すエラーを発生させます。データに何が起きたかを常に把握できます。
慣用的な TOML 出力
ネストされたオブジェクトは [テーブル] になり、深くネストされたオブジェクトはドット付きテーブル([tool.ruff])になり、オブジェクトの配列はテーブルの配列([[section]])になります — 実際の Cargo.toml や pyproject.toml が使う形です。
浮動小数点数と整数の認識
TOML は整数と浮動小数点数を区別するため、1.0 のような浮動小数点数は整数 1 として書き出されます。この強制変換が値の型を変える場合、ツールが警告するので、往復変換の意外な結果が見えるようになります。
100% ブラウザベースのプライバシー
すべての解析はブラウザ内でローカルに実行されます。あなたの JSON — 資格情報、トークン、内部サービスの詳細を含む — がアップロード・保存・記録されることはありません。
例
Cargo.toml のソース
{
"package": {
"name": "my-app",
"version": "1.0.0",
"edition": "2021"
},
"dependencies": {
"serde": { "version": "1.0", "features": ["derive"] },
"tokio": { "version": "1", "features": ["full"] }
}
} JSON から Rust の Cargo.toml を生成します — ネストされたオブジェクトは [テーブル] になり、インラインオブジェクトはインラインテーブルになります。Cargo が期待するとおりです。
pyproject.toml のソース
{
"build-system": {
"requires": ["hatchling"],
"build-backend": "hatchling.build"
},
"project": {
"name": "my-package",
"version": "0.3.1",
"requires-python": ">=3.10",
"dependencies": ["requests>=2.31", "pydantic>=2.0"]
}
} JSON のプロジェクトメタデータから PEP 621 準拠の pyproject.toml を生成します — ツールや API が生成した JSON を TOML 形式で必要とするときに便利です。
アプリ設定
{
"title": "My Service",
"debug": false,
"port": 8080,
"database": {
"host": "localhost",
"port": 5432,
"pool_size": 10
},
"features": ["auth", "metrics", "tracing"]
} フラットなアプリケーション設定オブジェクトを TOML に変換します — トップレベルのスカラーは先頭に残り、ネストされた database オブジェクトは [database] テーブルになります。
サーバー(テーブルの配列)
{
"servers": [
{ "name": "alpha", "ip": "10.0.0.1", "ports": [8001, 8002] },
{ "name": "beta", "ip": "10.0.0.2", "ports": [9001] }
]
} オブジェクトの配列は TOML でテーブルの配列([[servers]])になります — 繰り返しセクションを表現する慣用的な方法です。
Netlify 設定のソース
{
"build": {
"command": "npm run build",
"publish": "dist",
"environment": { "NODE_VERSION": "20" }
},
"redirects": [
{ "from": "/old", "to": "/new", "status": 301, "force": true }
]
} JSON のデプロイ設定を netlify.toml に変換します。ネストされた [build] と [build.environment] テーブル、そして [[redirects]] のテーブルの配列を含みます。
ドット構造を持つ設定
{
"tool": {
"ruff": { "line-length": 100, "target-version": "py310" },
"black": { "line-length": 100 }
}
} 深くネストされた JSON オブジェクトは [tool.ruff] や [tool.black] のようなドット付き TOML テーブルになります — pyproject.toml のツールが期待する形です。
使い方
- 1
JSON を貼り付ける
上の入力欄に JSON を入力または貼り付けます。「例を読み込む」をクリックして、Cargo.toml のソース、pyproject.toml のソース、またはアプリ設定オブジェクトを試すこともできます。
- 2
ライブ TOML 出力を見る
TOML が出力パネルに即座に表示されます。JSON にトップレベルの配列や null 値がある場合、ツールは壊れた出力を生成する代わりに、何をすべきかを正確に説明します。
- 3
コピーまたはダウンロード
「コピー」をクリックして TOML をクリップボードに取得するか、「ダウンロード」をクリックして、Cargo・Poetry・Hugo・Netlify・その他 TOML を読むあらゆるツールにすぐ使える .toml ファイルとして保存します。
JSON → TOML でよくある落とし穴
トップレベルの配列またはスカラー
TOML ドキュメントはルートでテーブル(オブジェクト)でなければなりません。JSON の配列や単独の値は TOML ドキュメントになれません。変換するにはキーの下にラップしてください。
[1, 2, 3]
{ "items": [1, 2, 3] } オブジェクト内の null 値
TOML には null 型がないため、null 値を持つオブジェクトのキーは変換中に削除されます。ツールはどのキーが削除されたかを警告します。キーを残す必要がある場合は、実際の値か空文字列を与えてください。
{ "name": "a", "nickname": null } { "name": "a", "nickname": "" } 配列内の null
TOML の配列は null や隙間を含められないため、[1, null, 3] のような JSON には有効な TOML 出力がありません。変換前に null を削除するか、実際の値に置き換えてください。
{ "ports": [8001, null, 8003] } { "ports": [8001, 8003] } 無効な JSON 構文
入力はまず有効な JSON でなければなりません。末尾のカンマ、単一引用符、引用符なしのキーは、JavaScript からコピーされた際によくある間違いで、有効な JSON ではないため、変換前に修正する必要があります。
{ 'name': 'a', 'active': true, } { "name": "a", "active": true } 小数部ゼロの浮動小数点数が整数になる
TOML は小数部がゼロの浮動小数点数(1.0)を整数 1 として書き出し、往復変換で型を変えます。ツールが警告します。値が概念的に整数なら問題ありません。浮動小数点数のまま保つ必要がある場合、TOML は整数についてそれを保持できません。
{ "ratio": 1.0 } → ratio = 1 { "ratio": 1.5 } → ratio = 1.5 同じキーでオブジェクトと配列を混在させる
JSON のキーが、テーブルまたはテーブルの配列にマッピングされるには、一貫してオブジェクトか配列でなければなりません。データセット全体で形が一貫しないと、紛らわしい TOML を生む可能性があります — 先に構造を正規化してください。
{ "server": { "a": 1 }, "server": [1] } { "server": { "a": 1 }, "servers": [1] } よくある使用例
- Cargo.toml を生成する
- スキャフォールディングツール、API、またはスクリプトからの構造化 JSON を、有効な Rust の Cargo.toml に変えます。ネストされた [dependencies] テーブルとインラインテーブルが自動的に生成されます。
- pyproject.toml を生成する
- JSON のプロジェクトメタデータを PEP 621 準拠の pyproject.toml に変換します。ドット付き [tool.*] テーブルを含むので、JSON を出力するツールが Python のパッケージング設定を生成できます。
- JSON から人間が編集できる設定へ
- アプリケーションの JSON 設定を、人間が快適に編集できる読みやすい TOML 設定ファイルに変換し、後から手でコメントを追加します。
- デプロイ設定の生成
- JSON から netlify.toml、foundry.toml、または類似のプラットフォーム設定を生成し、ネストされたオブジェクトとオブジェクトの配列を、それらのツールが期待するテーブルとテーブルの配列に変えます。
- 設定形式の移行
- この変換ツールを橋渡しとして使い、null とトップレベルの警告でマッピングできないものを捕捉しながら、設定を JSON ベースのシステムから TOML ベースのシステムへ移動します。
- TOML 構造のプロトタイピング
- ほとんどの開発者がすらすら書ける形式である JSON で設定をスケッチし、それを TOML に変換して、リポジトリにコミットする前に慣用的なテーブルとテーブルの配列のレイアウトを確認します。
技術的な詳細
- RFC 8259 準拠の JSON 解析
- JSON 入力は、完全に RFC 8259 準拠のブラウザネイティブの JSON.parse() で解析されます。シリアライズの前に、ツールはトップレベルの値がオブジェクトであることを確認し、null 値をスキャンして、削除されるオブジェクトのキーを警告したり、配列内の null を正確なパスとともに拒否したりできるようにします。
- smol-toml による TOML 1.0.0 出力
- TOML は、ゼロ依存で完全に TOML 1.0.0 準拠のシリアライザーである smol-toml ライブラリで生成されます。ネストされたオブジェクトはテーブルになり、深くネストされたオブジェクトはドット付きテーブルになり、オブジェクトの配列はテーブルの配列になります。小数部がゼロの浮動小数点数は TOML のルールに従って整数として書き出され、警告が付きます。
- 100% ブラウザベース — アップロードなし、サーバーなし
- すべての処理はブラウザの JavaScript エンジン内で行われます。いかなる時点でもデータは送信されません。200KB を超える入力はライブから手動モード(明示的な「変換」クリック)に切り替わり、インターフェースの応答性を保ちます。
ベストプラクティス
- トップレベルの配列はキーの下にラップする
- データが本来 JSON の配列である場合は、変換前に説明的なキーを持つオブジェクトで包んでください({ "items": [...] })。TOML ドキュメントはルートでテーブルでなければならず、キーは出力で配列に明確な名前を与えます。
- null が何を意味すべきか決める
- 変換前に、null フィールドを消すべき(キーを削除)か、値を持たせるべきかを決めてください。TOML はオブジェクトの null を削除し、配列の null を拒否するため、先に JSON で解決しておくと、予測可能で完全な出力が得られます。
- グループ化にはネストされたオブジェクトを使う
- 関連する設定を JSON のネストされたオブジェクトにまとめてください — TOML では、きれいな [テーブル] とドット付きテーブルになり、フラットなキーの羅列よりはるかに読みやすく、Cargo や pyproject の設定の構成の仕方に合致します。
- 先に JSON を検証する
- JSON が手書きだったり信頼できないソースから来たりする場合は、TOML に変換する前に JSON フォーマッター で検証し、末尾のカンマや引用符の間違いを捕捉してください。
- 変換後にコメントを追加する
- JSON にはコメントがないため、何も引き継がれません。TOML は # コメントをサポートするので、生成された TOML に手でドキュメントを追加してください — そもそも人間が編集する設定を TOML に移す主な理由の 1 つです。
よくある質問
オンラインで JSON を TOML に変換するには?
TOML とは何で、なぜ JSON をそれに変換するのですか?
なぜ JSON のトップレベルはオブジェクトでなければならないのですか?
JSON を TOML に変換するとき、null 値はどうなりますか?
ネストされたオブジェクトと配列はどう TOML に変換されますか?
1.0 のような浮動小数点数はどうなりますか?
私の JSON データはどこかのサーバーに送信されますか?
TOML を JSON に逆変換できますか?
コマンドラインで JSON を TOML に変換するには?
Python・Rust・Node.js で JSON を TOML に変換するには?
変換ツールはキーの順序を保持しますか?
JSON 入力にファイルサイズの制限はありますか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
Base64 画像変換ツール
エンコーディングとフォーマット
Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。
CSV to JSON 変換ツール
エンコーディングとフォーマット
CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。
.env から JSON への変換ツール
エンコーディングとフォーマット
.env ファイルを貼り付けるだけで即座に JSON に変換。データベースのパスワードや API キー、トークンはブラウザから一切出ません。100% プライベート、アップロード不要、無料の dotenv パーサー。
無料HTMLエンティティデコーダー — HTMLをアンエスケープ
エンコーディングとフォーマット
HTMLエンティティをデコードし、HTMLをオンラインでアンエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の参照を文字に戻します。アップロードは一切なし。
無料HTMLエンティティエンコーダー — HTMLをエスケープ
エンコーディングとフォーマット
HTMLエンティティをエンコードし、特殊文字(< > & " ')をオンラインでエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の出力に対応、アップロードは一切なし。