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リストは網羅的に: すべての有効な値をリストに含めます。
  • enumdescription を組み合わせて、各値の意味をドキュメント化します。
  • APIの場合、enumがオープンかクローズドかを検討してください。

ユースケース

ステータスコード、ロールタイプ、優先度レベル、設定モード、またはAPIコントラクトや設定スキーマで事前定義された許可値セットを持つフィールドにenum制約を使用します。

試してみる — JSON Schema Generator

フルツールを開く