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配列から変換する際に型の一貫性を確保する方法を理解する場合。