JSON Schemaの prefixItems によるタプルバリデーション
JSON Schemaの prefixItems を使用して固定長配列(タプル)を検証する方法を学びます。各位置に独自の型を持ち、座標ペアやレコードに最適です。
Array Schemas
詳細な説明
タプルスキーマ: 固定位置配列
通常の配列ではすべての要素が同じスキーマに従いますが、タプルは各位置に特定のスキーマを定義します。JSON Schema Draft 2020-12ではこの目的で prefixItems キーワードを使用します。
例: 座標ペア
以下のようなサンプルの場合:
[40.7128, -74.0060]
タプルスキーマ:
{
"type": "array",
"prefixItems": [
{ "type": "number", "minimum": -90, "maximum": 90 },
{ "type": "number", "minimum": -180, "maximum": 180 }
],
"items": false
}
prefixItemsは各位置のスキーマを定義します: インデックス0は緯度、インデックス1は経度。items: falseは定義された位置を超える追加要素を防ぎます。
例: 混合型レコード
タプルはCSV形式のレコードにも有用です:
["Alice", 30, true]
ジェネレーターの動作
ほとんどのジェネレーターはデフォルトで標準的な items スキーマ(同種配列)を生成します。タプル生成は通常、配列が異なる型の位置を持つ固定長であることをジェネレーターが検出する必要があります。
タプルの使用場面
- 座標:
[lat, lng]または[x, y, z] - 範囲: 日付、数値、ページネーション用の
[start, end] - 異種レコード: 各列が異なる型を持つCSVインポートの行
- 戻り値: 固定順序で複数の値を返す関数
ドラフト互換性
- Draft 2020-12: タプルスキーマには
prefixItemsを使用。 - Draft 7 / 2019-09: 配列としての
itemsとadditionalItems: falseを使用。
ユースケース
地理座標、日付範囲、固定フォーマットのデータ行、または各位置が異なるセマンティックな意味を持つ配列にタプルバリデーションを使用します。