JSON Schemaの enum 値 — 許可された値への制限
JSON Schemaの enum キーワードを使用してフィールドを固定された許可値セットに制限します。文字列、数値、混合型enumの実践的な例を紹介します。
Advanced Patterns
詳細な説明
enum で値を制限する
enum キーワードは、フィールドが保持できる値の明示的なリストを定義します。入力がリストされた値のいずれにも正確に一致しない場合、バリデーションは失敗します。
基本的な文字列enum
{
"status": {
"type": "string",
"enum": ["active", "inactive", "pending"]
}
}
リストされた3つの文字列のみが受け入れられます。"Active"(大文字)や "unknown" は拒否されます。
数値enum
{
"priority": {
"type": "integer",
"enum": [1, 2, 3, 4, 5]
}
}
混合型enum
{
"value": {
"enum": ["auto", 0, null]
}
}
混合型enumでは、type キーワードを完全に省略できます。
enum vs. const
単一の値のみが許可される場合、1要素のenumの代わりに const を使用します:
{ "version": { "const": "2.0" } }
ジェネレーターの動作
ジェネレーターは通常、単一のサンプルから enum を自動生成しません。有効な値の完全なセットを1つの例から知る方法がないためです。
ベストプラクティス
- enumリストは網羅的に: すべての有効な値をリストに含めます。
enumとdescriptionを組み合わせて、各値の意味をドキュメント化します。- APIの場合、enumがオープンかクローズドかを検討してください。
ユースケース
ステータスコード、ロールタイプ、優先度レベル、設定モード、またはAPIコントラクトや設定スキーマで事前定義された許可値セットを持つフィールドにenum制約を使用します。