TOMLインラインテーブルとJSONオブジェクト
TOMLインラインテーブルがJSONに似たコンパクトなオブジェクト構文を提供する方法を学びます。インラインテーブルと標準テーブルの使い分けとJSONへの変換方法を解説します。
TOML Basics
詳細な説明
TOMLのインラインテーブルは、オブジェクトを定義するためのコンパクトな1行構文を提供します。JSONオブジェクトに非常に似ており、小さくシンプルなデータ構造に最適です。
TOMLインラインテーブル:
point = {x = 1, y = 2}
name = {first = "Tom", last = "Preston-Werner"}
JSONに変換すると:
{
"point": {"x": 1, "y": 2},
"name": {"first": "Tom", "last": "Preston-Werner"}
}
インラインテーブルはJSON のオブジェクト構文に近いため、変換は単純です。
インラインテーブルと標準テーブルの比較:
同じデータをTOMLで2通りの方法で書けます:
# 標準テーブル
[address]
street = "123 Main St"
city = "Springfield"
state = "IL"
# インラインテーブル(同等)
address = {street = "123 Main St", city = "Springfield", state = "IL"}
両方とも同じJSONを生成します:
{
"address": {
"street": "123 Main St",
"city": "Springfield",
"state": "IL"
}
}
インラインテーブルの主な制限:
- 1行に収める必要がある。 インラインテーブルは複数行にまたがることができません(TOML v1.0時点)。これは小さなオブジェクトへの使用を実質的に制限します。
- 拡張できない。 定義後、ファイルの別の場所でインラインテーブルにキーを追加することはできません。標準テーブルでは順次キーを追加できます。
- ネストされたテーブルヘッダーは不可。 インラインテーブル内で
[table]ヘッダー構文は使用できません。
インラインテーブルを使うべき時:
- 2〜3個のシンプルなキーと値のペアを持つ小さなオブジェクト
- オブジェクトである配列要素:
items = [{id = 1, name = "a"}, {id = 2, name = "b"}] - 概念的に単一の単位である設定値(座標、寸法など)
標準テーブルを好むべき時:
- 3〜4個以上のキーを持つオブジェクト
- ネストされたオブジェクトを含むオブジェクト
- 複数行の可読性が有益な構造
JSONからTOMLに変換する際、優れたコンバーターは各オブジェクトの複雑さに基づいてインラインテーブルと標準テーブル構文を使い分けます。
ユースケース
TOMLファイルで完全なテーブルヘッダーが不必要な冗長さを加える場合に、コンパクトなメタデータや小さな設定オブジェクトを定義する。座標ペア、バージョン制約、シンプルなキーバリューマップの指定などが例です。