TOML配列とJSON配列

TOML配列がJSON配列にどのようにマッピングされるかを学びます。基本的な配列、複数行配列、配列要素が同じ型でなければならないTOMLの重要なルールを解説します。

TOML Basics

詳細な説明

TOML配列はJSON配列に直接マッピングされますが、一つの重要な制限があります:TOMLでは配列のすべての要素が同じ型である必要があります。これはTOMLの設定をより予測可能にするための意図的な設計上の選択です。

基本的なTOML配列:

ports = [8001, 8002, 8003]
hosts = ["alpha", "beta", "gamma"]
enabled = [true, false, true]

JSONに変換すると:

{
  "ports": [8001, 8002, 8003],
  "hosts": ["alpha", "beta", "gamma"],
  "enabled": [true, false, true]
}

複数行配列(可読性向上のため):

contributors = [
  "Alice",
  "Bob",
  "Charlie",
]

TOMLは複数行配列で末尾のカンマを許可しますが、JSONでは許可されません。コンバーターはJSON生成時に末尾のカンマを削除します。

ネストされた配列:

data = [[1, 2], [3, 4, 5]]

変換結果:{"data": [[1, 2], [3, 4, 5]]}

ネストされた配列は、各サブ配列が内部で均一型である限り有効です。

型の制限:

TOMLでは、これは無効です:

# エラー:配列内の混合型
mixed = [1, "two", true]

JSONは混合型配列を問題なく受け入れますが、TOMLでは受け入れません。JSONからTOMLに変換する際、混合型配列は再構築する必要があります。例えば、すべての要素を文字列に変換するか、別々の型付き配列に分割します。

インラインテーブルの配列:

points = [{x = 1, y = 2}, {x = 3, y = 4}]

変換結果:

{
  "points": [{"x": 1, "y": 2}, {"x": 3, "y": 4}]
}

各要素が同じ構造のインラインテーブル(オブジェクト)であるため、これは有効です。

ユースケース

TOML設定ファイルで許可される値、ポート番号、ホスト名のリストを定義し、混合型を含む可能性のあるJSON配列から変換する際に型の一貫性を確保する方法を理解する場合。

試してみる — TOML ↔ JSON Converter

フルツールを開く