追加プロパティの制御 — 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 キーワードは、propertiespatternProperties に定義されていない追加のプロパティをどう扱うかを制御します。

設定オプション:

  • additionalProperties: true(デフォルト): 任意の追加プロパティを許可
  • additionalProperties: false: 追加プロパティを完全に禁止
  • additionalProperties: { type: "string" }: 追加プロパティの値の型を制約

使用例:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" }
  },
  "additionalProperties": false
}

このスキーマでは name プロパティのみ許可され、それ以外のプロパティがあるとバリデーションに失敗します。APIのリクエストボディで予期しないフィールドを検出するのに有効です。

注意: additionalProperties: false は厳密なスキーマ定義に有用ですが、スキーマの進化(フィールド追加)時に後方互換性の問題を引き起こす可能性があります。

ユースケース

APIリクエストの厳密なバリデーション、設定ファイルのフォーマット強制、データの型安全性を保証する際に使用します。

試してみる — JSON Schema Validator

フルツールを開く