追加プロパティの制御 — additionalPropertiesの使い方
JSON Schemaの additionalProperties キーワードでオブジェクトの追加プロパティを制御する方法を解説します。
Object Constraints
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": ["GET", "POST", "PUT", "DELETE"]
},
"url": {
"type": "string",
"format": "uri"
},
"timeout": {
"type": "integer",
"minimum": 1,
"maximum": 30000
}
},
"required": ["method", "url"],
"additionalProperties": false
}Test Data
{
"method": "POST",
"url": "https://api.example.com/users",
"timeout": 5000
}詳細な説明
JSON Schemaの additionalProperties キーワードは、properties と patternProperties に定義されていない追加のプロパティをどう扱うかを制御します。
設定オプション:
additionalProperties: true(デフォルト): 任意の追加プロパティを許可additionalProperties: false: 追加プロパティを完全に禁止additionalProperties: { type: "string" }: 追加プロパティの値の型を制約
使用例:
{
"type": "object",
"properties": {
"name": { "type": "string" }
},
"additionalProperties": false
}
このスキーマでは name プロパティのみ許可され、それ以外のプロパティがあるとバリデーションに失敗します。APIのリクエストボディで予期しないフィールドを検出するのに有効です。
注意: additionalProperties: false は厳密なスキーマ定義に有用ですが、スキーマの進化(フィールド追加)時に後方互換性の問題を引き起こす可能性があります。
ユースケース
APIリクエストの厳密なバリデーション、設定ファイルのフォーマット強制、データの型安全性を保証する際に使用します。