TOML → JSON 変換ツール
TOML を貼り付けると、ブラウザ内で即座に JSON に変換します。Cargo.toml・pyproject.toml・config.toml に対応。日付やネストされたテーブルも正確に処理。完全プライベート、アップロード不要。
オプション · 2 スペース
TOML とは何で、なぜ JSON に変換するのか?
TOML(Tom's Obvious, Minimal Language)は、曖昧さがなく、人間が読みやすく、ハッシュテーブルへ簡単にマッピングできるように Tom Preston-Werner によって作られた設定ファイル形式です。Rust エコシステム(Cargo.toml)、モダンな Python パッケージング(pyproject.toml、PEP 518 と PEP 621 で標準化)、そして Hugo、Netlify、Poetry、Foundry といったツールで既定の設定形式になっています。対照的に JSON は普遍的な機械間交換形式で — あらゆる言語がそれを解析し、あらゆる API がそれを話します。したがって TOML を JSON に変換することはよくある作業です: 読みやすい TOML で設定を書き、JSON に変換してプログラムに渡したり、JSON ツールで調べたり、パイプラインで差分比較したりします。
このツールには、正確さの点で重要ないくつかの差別化要因があります:
**1. 日時の忠実さ。** TOML には JSON に完全に欠けている一級の日付・時刻型 — オフセット日時、ローカル日時、ローカル日付、ローカル時刻 — があります。素朴な変換ツールはそれらすべてを ISO タイムスタンプに平坦化してしまうため、1979-05-27 のようなローカル日付が 1979-05-27T00:00:00Z になり、時刻とタイムゾーンをこっそり捏造します。このツールは TOML の正確な種別を保持します: ローカル日付はカレンダー日付のまま、ローカル時刻は時刻のまま、オフセット日時だけがタイムゾーンを持ちます。これでデータが正直に保たれ、往復変換でも情報が失われません。
**2. 完全な TOML 1.0.0 サポート。** ネストされたテーブル、ドット付きキー、インラインテーブル、テーブルの配列([[section]])はすべて、ゼロ依存の smol-toml ライブラリを使って TOML 1.0.0 仕様どおりに正しく解析されます。インラインテーブルと標準テーブルが混在した実際の Cargo.toml や pyproject.toml ファイルも、仕様が要求するとおり正確に変換されます。
**3. 正直な大きな整数の処理。** TOML の整数は 64 ビットですが、ブラウザ JavaScript は 2^53 - 1 までの整数しか正確に保持できません。大きな値をこっそり壊したりクラッシュしたりする代わりに、このツールは最も近い JSON 数値に変換して警告します。そのため、代わりに値を文字列として保存するかを選べます。ブラウザの根本的な制限についてのこの正直さは、ほとんどの変換ツールが見過ごしている点です。
**4. 100% ブラウザベースのプライバシー。** あなたの TOML — レジストリトークン、内部パッケージソース、デプロイシークレットを含むかもしれません — がブラウザから外に出ることはありません。アップロードなし、サーバーなし、ログなし。ブラウザのネットワークタブで確認できます。
逆方向が必要ですか?JSON → TOML 変換ツール を使ってください。他の設定形式を変換していますか?JSON → YAML 変換ツール と YAML → JSON 変換ツール を試すか、まず JSON フォーマッター で JSON 出力を検証・整形してください。TOML、JSON、YAML にはそれぞれ役割があります: 人間が編集するアプリ設定には TOML、機械間交換には JSON、深くネストされたインフラのマニフェストには YAML。この変換ツールを使えば、コードを 1 行も書かずに前者 2 つの間を移動できます。
// Convert TOML to JSON in Node.js using the smol-toml library
import { parse } from 'smol-toml';
const toml = `
[package]
name = "my-app"
version = "1.0.0"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
`;
const data = parse(toml);
const json = JSON.stringify(data, null, 2);
console.log(json);
// {
// "package": { "name": "my-app", "version": "1.0.0" },
// "dependencies": {
// "serde": { "version": "1.0", "features": ["derive"] }
// }
// } 主な機能
ライブ変換
TOML を入力または貼り付けるたびに JSON 出力が即座に更新されます — 「変換」ボタンは不要です。大きな入力(>200KB)は自動的に手動モードに切り替わり、ブラウザの応答性を保ちます。
日時の忠実さ
TOML のオフセット日時、ローカル日時、ローカル日付、ローカル時刻は、元の種別を保持する JSON 文字列に変換されます — 捏造された午前 0 時のタイムスタンプはなく、往復変換でも情報が失われません。
完全な TOML 1.0.0 サポート
ネストされたテーブル、ドット付きキー、インラインテーブル、テーブルの配列([[section]])はすべて、ゼロ依存の smol-toml エンジンで TOML 1.0.0 仕様に合わせて正しく解析されます。
Cargo.toml・pyproject.toml 対応
実世界で最も一般的な TOML ファイル — Rust のマニフェストと Python のパッケージング設定 — 向けに最適化されており、インラインテーブルとテーブルの配列を含みます。例を読み込んで、生成される正確な JSON 構造を確認できます。
正直な大きな整数の警告
JavaScript の安全な範囲(2^53)を超える整数は JSON で正確に表現できません — ツールはそれらを最も近い数値に変換して警告し、値をこっそり壊すことはありません。
100% ブラウザベースのプライバシー
すべての解析はブラウザ内でローカルに実行されます。あなたの TOML — レジストリトークン、プライベートパッケージソース、デプロイシークレットを含む — がアップロード・保存・記録されることはありません。
例
Cargo.toml(Rust)
[package]
name = "my-app"
version = "1.0.0"
edition = "2021"
authors = ["Jane Doe <jane@example.com>"]
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
criterion = "0.5"
[[bin]]
name = "my-app"
path = "src/main.rs" Rust の Cargo.toml マニフェストを JSON に変換します。ツール連携、依存関係ダッシュボード、または cargo メタデータを JSON 前提のスクリプトに渡す用途に便利です。
pyproject.toml(Python)
[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" ] [project.optional-dependencies] dev = ["pytest>=8.0", "ruff>=0.4"] [tool.ruff] line-length = 100
PEP 621 準拠の pyproject.toml を JSON に変換し、プロジェクトのメタデータ・依存関係・ツール設定をプログラムから調べられるようにします。
netlify.toml
[build] command = "npm run build" publish = "dist" [build.environment] NODE_VERSION = "20" [[redirects]] from = "/old-path" to = "/new-path" status = 301 force = true [[headers]] for = "/*" [headers.values] X-Frame-Options = "DENY"
Netlify のビルド設定を JSON に変換し、リダイレクトやヘッダーを検証したり、別プラットフォーム向けの同等設定を生成したりします。
Hugo config.toml
baseURL = "https://example.org" languageCode = "en-us" title = "My Hugo Site" theme = "ananke" [params] description = "A static site built with Hugo" mainSections = ["posts", "docs"] [[menu.main]] name = "Blog" url = "/posts/" weight = 1 [[menu.main]] name = "About" url = "/about/" weight = 2
Hugo サイトの config.toml を JSON に変換し、設定の移行、構成の差分比較、または設定 UI の駆動に使います。
rustfmt.toml
edition = "2021" max_width = 100 hard_tabs = false tab_spaces = 4 newline_style = "Unix" use_small_heuristics = "Default" reorder_imports = true reorder_modules = true
フラットな rustfmt.toml を JSON に変換します。トップレベルのキー・値ペア(テーブルなし)が JSON オブジェクトに直接マッピングされる好例です。
日付とテーブルの配列を含むアプリ設定
title = "Deployment Log" last_deployed = 1979-05-27T07:32:00Z release_date = 1979-05-27 maintenance_window = 02:00:00 [[servers]] name = "alpha" ip = "10.0.0.1" ports = [8001, 8002] [[servers]] name = "beta" ip = "10.0.0.2" ports = [9001]
TOML ネイティブの日時(オフセット日時、ローカル日付、ローカル時刻)とテーブルの配列が、JSON の文字列と配列にきれいに変換される様子を示します。
使い方
- 1
TOML を貼り付ける
上の入力欄に TOML を入力または貼り付けます。「例を読み込む」をクリックして、実際の Cargo.toml、pyproject.toml、またはデプロイ設定を試すこともできます。
- 2
ライブ JSON 出力を見る
JSON が出力パネルに即座に表示されます。インデントオプション(2 または 4 スペース)を対象の形式に合わせて調整します。日付、テーブル、テーブルの配列は自動的に処理されます。
- 3
コピーまたはダウンロード
「コピー」をクリックして JSON をクリップボードに取得するか、「ダウンロード」をクリックして、プログラム・API・ツール連携にすぐ使える .json ファイルとして保存します。
TOML でよくある落とし穴
引用符なしの文字列値
TOML では文字列値は引用符で囲む必要があります。等号の右側の裸の語が有効なのは、真偽値(true/false)、数値、日付、または配列の一部の場合だけです。文字列は二重引用符または単一引用符で囲んでください。
name = my-app
name = "my-app"
重複キー
TOML は同じテーブル内で同じキーを 2 回定義することを禁止し、すでに定義されたテーブルを再定義することも禁止します。これは設定の断片をマージするときによくあるエラーです。各キーとテーブルは一意でなければなりません。
name = "a" name = "b"
name = "a" alt_name = "b"
無効な日時形式
TOML の日時は RFC 3339 に従います。日付には 4 桁の年、2 桁の月、2 桁の日が必要で、日時には T(またはスペース)の区切りが必要です。不正な形式の日付は解析に失敗します。
released = 2026-7-2
released = 2026-07-02
閉じ括弧の欠落
配列、インラインテーブル、テーブルヘッダーは閉じる必要があります。閉じられていない [ や { は、問題が検出された行と列を指す解析エラーを生成します。
ports = [8001, 8002
ports = [8001, 8002]
安全な範囲を超える整数
TOML の整数は 64 ビットですが、ブラウザの JSON 数値は 2^53 - 1 に制限されています。それを超える値は変換中に丸められ、警告が表示されます。非常に大きな整数は引用符付きの文字列として保存し、正確に保ってください。
snowflake = 1420070400000000000
snowflake = "1420070400000000000"
テーブルの再定義
[servers] のようなテーブルを一度定義すると、同じヘッダーで再び開くことはできません。複数のエントリを持たせるには、代わりにテーブルの配列([[servers]])を使ってください。これはオブジェクトの JSON 配列になります。
[servers] name = "a" [servers] name = "b"
[[servers]] name = "a" [[servers]] name = "b"
よくある使用例
- Rust Cargo のメタデータ
- Cargo.toml を JSON に変換して、依存関係ダッシュボードを構築したり、クレートのバージョンや機能を監査したり、TOML ではなく JSON を前提とするスクリプトや CI にマニフェストデータを渡したりします。
- Python プロジェクト設定
- pyproject.toml を JSON に変換して、PEP 621 のプロジェクトメタデータを調べたり、依存関係リストを抽出したり、パッケージング設定をプログラムから読むツールを駆動したりします。
- デプロイ設定の検査
- netlify.toml、foundry.toml、その他のプラットフォーム設定を JSON に変換して、リダイレクト・ヘッダー・ビルド設定を監査したり、別プラットフォーム向けの同等設定を生成したりします。
- 設定形式の移行
- JSON を好むシステムへ移行するときに TOML アプリ設定を JSON に変換したり、jq のような JSON ツールでさらに変換する前の中間ステップとして使ったりします。
- 静的サイトの設定
- Hugo の config.toml を JSON に変換して、サイト設定を移行したり、環境間で構成を差分比較したり、JSON を裏側に持つ設定 UI を構築したりします。
- API とスクリプトの入力
- 人間が書いた TOML を、REST API・サーバーレス関数・自動化スクリプトが直接消費できる JSON に変換し、読みやすい設定と機械入力を橋渡しします。
技術的な詳細
- smol-toml による TOML 1.0.0 解析
- TOML はゼロ依存で完全に TOML 1.0.0 準拠のパーサーである smol-toml ライブラリで解析されます。ネストされたテーブル、ドット付きキー、インラインテーブル、テーブルの配列、複数行文字列、および 4 種類すべての日時型を正しく処理し、解析エラーを行と列の位置とともに報告します。
- 損失のない日時と安全な整数の処理
- TOML の日時は、正確な種別(オフセット日時、ローカル日時、ローカル日付、ローカル時刻)を保持する JSON 文字列にシリアライズされます。JavaScript の安全な範囲(2^53 - 1)を超える整数は解析中に BigInt に昇格され、その後、精度警告とともに最も近い JSON 数値に変換されるため、有効な TOML の変換が失敗することはありません。
- 100% ブラウザベース — アップロードなし、サーバーなし
- すべての処理はブラウザの JavaScript エンジン内で行われます。いかなる時点でもデータは送信されません。200KB を超える入力はライブから手動モード(明示的な「変換」クリック)に切り替わり、インターフェースの応答性を保ちます。
ベストプラクティス
- 非常に大きな整数は文字列として保存する
- TOML に 2^53 - 1 を超える整数(Snowflake ID、ナノ秒タイムスタンプ、大きなカウンター)がある場合は、変換前に引用符で囲んで文字列にしてください。ブラウザの JSON 数値ではそれらを正確に保持できず、丸めが必要になるとツールが警告します。
- JSON 出力には 2 スペースインデントを推奨
- 2 スペースのインデントは JSON で最も広く使われる慣習で、ほとんどのフォーマッターや差分ツールとうまく調和する、きれいで読みやすい出力を生みます。4 スペースインデントはスタイルガイドが要求する場合のために取っておきましょう。
- 使う前に JSON 出力を検証する
- 変換後、JSON を手で編集したり、厳格な場所に渡したりする予定なら、JSON フォーマッター に通して、有効で一貫した形式であることを確認してください。
- TOML のコメントは別に保管する
- JSON にはコメント構文がないため、TOML の # コメントは変換時に失われます。コメントが重要なドキュメントである場合は、生成された JSON の隣に元の TOML をバージョン管理に保管してください。
- 繰り返しセクションにはテーブルの配列を使う
- 似たセクション(servers、redirects、bins)が複数ある場合は、[section] を繰り返すのではなく、テーブルの配列([[section]])として書いてください。重複テーブルエラーを引き起こす代わりに、きれいなオブジェクトの JSON 配列に変換されます。
よくある質問
オンラインで TOML を JSON に変換するには?
TOML とは何で、なぜ JSON に変換するのですか?
TOML の日付と時刻は JSON でどう表現されますか?
このツールは Cargo.toml と pyproject.toml に対応していますか?
TOML のテーブルとテーブルの配列はどう変換されますか?
TOML を JSON に変換するとき、非常に大きな整数はどうなりますか?
私の TOML データはどこかのサーバーに送信されますか?
JSON を TOML に逆変換できますか?
コマンドラインで TOML を JSON に変換するには?
Python・Rust・Node.js で TOML を JSON に変換するには?
変換ツールはキーの順序を保持しますか、コメントはどうなりますか?
TOML 入力にファイルサイズの制限はありますか?
関連ツール
すべてのツールを見る →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進の出力に対応、アップロードは一切なし。