配列要素の型制約 — JSON SchemaのitemsキーワードO
JSON Schemaの items キーワードで配列の各要素の型やスキーマを定義する方法を解説します。
Array Constraints
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"userIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"minItems": 1,
"maxItems": 100
},
"emails": {
"type": "array",
"items": {
"type": "string",
"format": "email"
}
},
"coordinates": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "number"
},
"minItems": 2,
"maxItems": 2
}
}
},
"required": ["userIds"]
}Test Data
{
"userIds": [101, 202, 303, 404],
"emails": ["alice@example.com", "bob@example.com"],
"coordinates": [[37.7749, -122.4194], [40.7128, -74.006]]
}詳細な説明
JSON Schemaの items キーワードは、配列の各要素が従うべきスキーマを定義します。全要素に同じスキーマを適用する場合に使用します。
基本的な使い方:
{
"type": "array",
"items": {
"type": "string"
}
}
このスキーマは文字列のみを要素とする配列を許可します。["a", "b", "c"] は有効ですが、["a", 1, true] は無効です。
複雑な要素スキーマ:
items にはオブジェクトスキーマも指定できます。例えば、ユーザーリストのバリデーション:
{
"type": "array",
"items": {
"type": "object",
"required": ["id", "name"],
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" }
}
}
}
これにより、配列の各要素が id(整数)と name(文字列)を持つオブジェクトであることが保証されます。
ユースケース
APIレスポンスのリストデータ、CSVインポート時の行データ、バッチ処理の入力データなどで配列要素の型を検証する際に使用します。