JSON→TOML変換

JSONドキュメントをTOML形式に変換する方法を学びます。構文のマッピング、構造的な違い、設定ファイルでJSONよりTOMLを選ぶべきタイミングを解説します。

JSON to TOML

詳細な説明

JSONからTOMLへの変換は、より人間が読みやすい設定ファイルが必要な場合に有用です。TOMLの最小限の構文はJSONの視覚的なノイズ(波括弧、キーのクォート、カンマ)の多くを取り除きながら、同じデータ構造を保持します。

JSON設定:

{
  "server": {
    "host": "localhost",
    "port": 8080,
    "debug": true
  },
  "database": {
    "url": "postgres://localhost/mydb",
    "pool_size": 5
  }
}

TOMLに変換すると:

[server]
host = "localhost"
port = 8080
debug = true

[database]
url = "postgres://localhost/mydb"
pool_size = 5

変換時に変わること:

  1. 波括弧がテーブルヘッダーになる。 JSONのネストされた {} オブジェクトはTOMLの [table] ヘッダーになります。
  2. キーのクォートがなくなる。 JSONの "host" はTOMLではベアの host になります(キーに特殊文字が含まれる場合を除く)。
  3. コロンが等号になる。 "port": 8080port = 8080 になります。
  4. カンマが削除される。 TOMLはキーと値のペアの区切りに改行を使用します。

JSONからTOMLへの変換の重要な制限事項:

  • JSONの null にはTOMLの等価物がない。 TOMLはnull値をサポートしていません。コンバーターはキーを省略するか、別の方法で表現する必要があります。
  • JSONの異種配列が失敗する可能性。 TOML配列は同じ型の要素を含む必要があります。[1, "two", true] のようなJSON配列はTOMLでは無効です。
  • 深いネストはTOMLでは冗長になる。 JSONが波括弧で任意のネストを処理するのに対し、TOMLはドット付きキーや [a.b.c.d] のような長いテーブルパスを使用します。

TOMLは適度なネスト深度の設定ファイルに最適です。深くネストされたデータ構造には、JSONやYAMLの方が適している場合があります。

ユースケース

TOMLを好むツールの採用時にプロジェクトの設定をJSON形式からTOMLに移行する場合。pyproject.tomlでのPythonプロジェクトのセットアップやCargo.tomlでのRustプロジェクトなどが例です。

試してみる — TOML ↔ JSON Converter

フルツールを開く