TOMLテーブルとJSONオブジェクト

TOMLテーブルがJSONオブジェクトにどのようにマッピングされるかを理解します。標準テーブル、ドット付きキー、TOMLのセクションベースの構造がネストされたJSONにどう変換されるかを学びます。

TOML Basics

詳細な説明

テーブルはTOMLの主要な構造化メカニズムで、JSONオブジェクトに相当します。テーブルを理解することは、簡単でないTOMLドキュメントを扱うために不可欠です。

ヘッダー付きTOMLテーブル:

[owner]
name = "Tom Preston-Werner"
organization = "GitHub"

[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002]
enabled = true

JSONに変換すると:

{
  "owner": {
    "name": "Tom Preston-Werner",
    "organization": "GitHub"
  },
  "database": {
    "server": "192.168.1.1",
    "ports": [8001, 8001, 8002],
    "enabled": true
  }
}

テーブルヘッダー構文:

  • [tablename] は出力に新しいオブジェクトを作成します
  • ヘッダーの下にあるすべてのキーと値のペアはそのテーブルに属します
  • 新しいヘッダーが新しいテーブルを開始します

インラインネスト用のドット付きキー:

fruit.apple.color = "red"
fruit.apple.taste = "sweet"
fruit.orange.color = "orange"

生成結果:

{
  "fruit": {
    "apple": { "color": "red", "taste": "sweet" },
    "orange": { "color": "orange" }
  }
}

ドット付きテーブルヘッダー:

[servers.alpha]
ip = "10.0.0.1"
role = "frontend"

[servers.beta]
ip = "10.0.0.2"
role = "backend"

これは serversalphabeta オブジェクトを含むネストされたJSON構造を作成します。

重要なルール:

  • テーブルは2回以上定義できません([[array]] 構文を除く)。
  • ドット付きキーとテーブルヘッダーは組み合わせ可能ですが、キーを再定義することはできません。
  • TOMLでのテーブルの順序は保持されますが、JSONでは意味的に重要ではありません(JSON仕様ではオブジェクトは順不同)。

ユースケース

[server]、[database]、[logging]のような論理的なセクションでアプリケーション設定を構造化し、アプリケーションの設定パーサーが消費する際にこれらのセクションがネストされたJSONオブジェクトにどのようにマッピングされるかを理解する場合。

試してみる — TOML ↔ JSON Converter

フルツールを開く