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. 1行に収める必要がある。 インラインテーブルは複数行にまたがることができません(TOML v1.0時点)。これは小さなオブジェクトへの使用を実質的に制限します。
  2. 拡張できない。 定義後、ファイルの別の場所でインラインテーブルにキーを追加することはできません。標準テーブルでは順次キーを追加できます。
  3. ネストされたテーブルヘッダーは不可。 インラインテーブル内で [table] ヘッダー構文は使用できません。

インラインテーブルを使うべき時:

  • 2〜3個のシンプルなキーと値のペアを持つ小さなオブジェクト
  • オブジェクトである配列要素:items = [{id = 1, name = "a"}, {id = 2, name = "b"}]
  • 概念的に単一の単位である設定値(座標、寸法など)

標準テーブルを好むべき時:

  • 3〜4個以上のキーを持つオブジェクト
  • ネストされたオブジェクトを含むオブジェクト
  • 複数行の可読性が有益な構造

JSONからTOMLに変換する際、優れたコンバーターは各オブジェクトの複雑さに基づいてインラインテーブルと標準テーブル構文を使い分けます。

ユースケース

TOMLファイルで完全なテーブルヘッダーが不必要な冗長さを加える場合に、コンパクトなメタデータや小さな設定オブジェクトを定義する。座標ペア、バージョン制約、シンプルなキーバリューマップの指定などが例です。

試してみる — TOML ↔ JSON Converter

フルツールを開く