100% ローカル — データがブラウザの外に出ることはありません

JSONをTOMLに変換|人が読んで手で直せる設定ファイルに

JSONをTOMLに変換します。テーブル、点で区切ったキー、テーブルの配列が、Cargo や pyproject のように人が読んで手で直せる設定ファイルとして出てきます。

高速 プライベート Cookieゼロ

JSON 入力

TOML 出力

このツールの動作

入れ子のオブジェクトはテーブルに、オブジェクトの配列はテーブルの配列になります。

{
  "db": { "host": "localhost", "pool": { "size": 10 } },
  "servers": [{ "name": "a" }, { "name": "b" }]
}
[db]
host = "localhost"

[db.pool]
size = 10

[[servers]]
name = "a"

[[servers]]
name = "b"

根はオブジェクトである必要があります。TOML のファイルはテーブルそのものなので、先頭に JSON の配列があっても、キーを掛ける先がありません。

止めるのは null

TOML に空値はなく、ないものをあるように見せる二つの方法はどちらも誤りです。

  • キーを落とすとファイルの意味が変わります。設定が無いことと、何もない値に設定されていることは別です。
  • "" を書くと、そこになかった値を作り出すことになります。

だから変換は止まり、どのキーかを告げます。この変換が妥当な JSON 文書を拒む唯一の場所であり、拒む理由は、続ければ嘘になるからです。

64 ビットを超える整数はそのまま書く

{ "id": 12345678901234567890 }

は二十桁のまま出ます。TOML の整数は符号付き 64 ビットなので、この値は範囲外であり、厳密な読み手はファイルを拒否します。

これは意図したことです。もう一つの道——倍精度を経由する変換器がやるように 12345678901234567000 へ丸めること——は、きれいに解析でき、中身が別の数値になっているファイルを渡すことです。声の大きな失敗のほうが、静かな嘘よりましです。

日付は文字列のまま

JSON に日付の型はありません。"2026-01-01" はテキストとして届き、引用符付きの "2026-01-01" として出ます。

TOML には日付の型がありますが、それを使うことは、著者が日付のつもりだったと決めることです。そうである場合もあり、その文字列が製品コードやフォルダ名、版番号である場合もあります。JSON はすでにテキストだと告げており、それに逆らう理由はありません。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

なぜ null で変換が止まるのですか。
TOML に null がなく、ごまかす方法が二つともに誤りだからです。キーを落とせばファイルの意味が変わります。設定が無いことと、設定が何もない値であることは別です。空文字列を書けば、元になかった値を作ることになります。変換は止まり、どのキーかを告げます。判断はあなたのものです。
識別子が 64 ビットを超えます。どうなりますか。
そのまま書きます。TOML の整数は符号付き 64 ビットなので、二十桁の値は範囲外であり、厳密な読み手はファイルを拒否します。声を上げて、です。それが良い失敗です。もう一つの道は別の数値へ丸めることで、それはきれいに解析でき、なおかつ嘘をついているファイルを渡すことになります。
なぜ日付が引用符付きの文字列なのですか。
JSON の中で文字列だったからです。TOML には日付の型がありますが、それを書くことは `"2026-01-01"` が製品コードやフォルダ名ではなく日付だと決めることです。JSON はそれがテキストだと告げています。テキストのままにします。

関連ツール