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"
これは servers が alpha と beta オブジェクトを含むネストされたJSON構造を作成します。
重要なルール:
- テーブルは2回以上定義できません(
[[array]]構文を除く)。 - ドット付きキーとテーブルヘッダーは組み合わせ可能ですが、キーを再定義することはできません。
- TOMLでのテーブルの順序は保持されますが、JSONでは意味的に重要ではありません(JSON仕様ではオブジェクトは順不同)。
ユースケース
[server]、[database]、[logging]のような論理的なセクションでアプリケーション設定を構造化し、アプリケーションの設定パーサーが消費する際にこれらのセクションがネストされたJSONオブジェクトにどのようにマッピングされるかを理解する場合。