JSON から TOML への変換

左側に JSON オブジェクトを貼り付けると、右側に TOML が表示されます。@iarna/toml による厳密な仕様準拠。アップロードなし。

  1. 左側のテキストエリアに JSON オブジェクトを貼り付けます。
  2. 「TOML に変換」をクリック。トップレベルは JSON オブジェクトでなければなりません — 配列ではありません。
  3. TOML 出力をコピーまたはダウンロードします。
  4. レコードのリストには、TOML テーブル配列を使ってください — まず `{ items: [...] }` で包みます。
何ができるのか?

@iarna/toml を使って JSON オブジェクトを TOML 1.0 準拠ドキュメントに変換します。ネストされたオブジェクトは `[section]` ヘッダーになり、オブジェクトの配列は `[[items]]` テーブル配列ブロックになります;文字列、数値、ブール、ISO 8601 datetime 文字列は TOML プリミティブにマップされます。出力は標準的な順序にソートされ、厳格な TOML パーサとの互換性のためにキーがサブテーブルより前に現れます。

JSON 入力:

{
  "name": "Ada",
  "active": true,
  "address": {
    "city": "London"
  }
}

TOML 出力:

name = "Ada"
active = true

[address]
city = "London"

JSON から TOML のよくある落とし穴

TOML は JSON よりトップレベルの規則が厳格です。以下のパターンが、「動くはず」の JSON 値が失敗する理由を説明します。

  • トップレベル配列。 TOML はトップレベルの JSON 配列を表現できません。包んでください: `{"items": [...]}`。結果は `[[items]]` の下の TOML テーブル配列になります。
  • トップレベルスカラ。 裸の `42` や `"hello"` JSON ドキュメントは TOML で結びつくキーがありません。オブジェクトで包んでください: `{"value": 42}`。
  • null 値。 TOML には null 型がありません。シリアライザは JSON 値が null のキーを完全に省略します。「明示的に何もない」を表現する必要があれば、空文字列 `""` または下流コードに応じたセンチネル値を使ってください。
  • 混在型配列。 TOML 1.0 は `[1, "two"]` を許可しますが、レガシー 0.5 パーサは許可しません。TOML が 0.5 ツールチェーンを通る必要があるなら、変換前に JSON で配列を均質に保ってください。
  • TOML 出力でドット入りのキー。 `"my.key"` のような JSON キーは TOML の「ドットキー」パスになり、TOML パーサはネストとして解釈します。キー名にリテラルなドットを保持するには、シリアライザがそれを引用符で囲みます: `"my.key" = ...` — しかし消費者は依然としてパスとして解析する可能性があります。
  • NaN / Infinity。 TOML 1.0 は `nan`、`inf`、`-inf` リテラルをサポートします。JSON はこれらを表現しません — 通常は文字列 `"NaN"`、`"Infinity"` などとして到着します。本物の TOML 浮動小数特殊値が必要なら手動で変換してください。
よくある質問

日付はどう表現されますか?

JSON の日付は ISO 8601 文字列です(例: `"2026-04-26T12:00:00Z"`)。シリアライザはそれらを TOML でも文字列として保持し、ネイティブ datetime 型としては保持しません。ネイティブの TOML datetime を取得するには、JavaScript 側で正しい型マーカーで前処理して値を出力する必要があります。

深くネストされたオブジェクトは平坦化されますか?

いいえ — `[a.b.c]` のネストされたヘッダになります。各ネストレベルがドットで結合されたヘッダパスになります。非常に深い構造の場合、出力に長いヘッダ行が出ることがあります;それは TOML が深さを表現する方法に過ぎません。

キーの順序は保持されますか?

ほとんど。シリアライザは TOML 規則に従い、プリミティブがサブテーブルより前に来るように順序を正規化します。各階層の中では JSON の挿入順が保持されます。

出力で TOML インラインテーブルを得るには?

できません — シリアライザは常に `[section]` ブロックヘッダを使用し、インラインテーブルは使用しません。インライン出力が必要なら結果を後処理してください。インラインテーブルは TOML の可読性機能であり、別のデータ形ではありません。

私の JSON はアップロードされますか?

いいえ。すべてはあなたのブラウザで実行されます — 入力はこのページの JavaScript で解析・シリアライズされ、サーバーに送信されることはありません。

JSON → TOML → JSON のラウンドトリップは可能ですか?

サポートされている型(文字列、数値、ブール、ネストされたオブジェクト、オブジェクトの配列)に対しては、はい。ラウンドトリップは null 値を失い(TOML には null がない)、キー順序を正規化することがあります。