JSON Schemaの数値制約 — minimum、maximum、multipleOf

サンプルデータからJSON Schemaを生成した後に、minimum、maximum、exclusiveMinimum、multipleOf で数値型と整数型を改善する方法を学びます。

Basic Types

詳細な説明

生成されたスキーマの数値型の改善

ジェネレーターが 4219.99 のような数値に遭遇すると、それぞれ "type": "integer" または "type": "number" を出力します。ビジネスルールを強制するには追加のキーワードが必要です。

数値キーワードの概要

キーワード 効果
minimum 値はこの数値以上でなければならない
maximum 値はこの数値以下でなければならない
exclusiveMinimum 値はこの数値より大きくなければならない
exclusiveMaximum 値はこの数値より小さくなければならない
multipleOf 値は正確な倍数でなければならない

例: 価格バリデーション

生成されたスキーマの初期状態:

{ "price": { "type": "number" } }

ECサイトAPIのために改善:

{
  "price": {
    "type": "number",
    "minimum": 0,
    "exclusiveMinimum": 0,
    "maximum": 999999.99,
    "multipleOf": 0.01
  }
}

exclusiveMinimum: 0 は無料商品を拒否し(価格は正の値でなければなりません)、maximum は上限を設定し、multipleOf: 0.01 は小数点以下2桁の精度を保証します。

integer と number の違い

JSON Schemaは "integer"(整数のみ)と "number"(小数を含む任意の数値)を区別します。ジェネレーターはサンプル値に小数部がない場合に "integer" を選択します。本番環境で小数を受け入れるフィールドの場合は、生成後にタイプを "number" に変更してください。

他のキーワードとの組み合わせ

数値制約は enumoneOf(異なるコンテキストでの異なる範囲)、if/then(条件付き範囲)と自然に組み合わせることができます。この柔軟性により、金融、科学、設定のユースケースにも対応できるJSON Schemaの数値バリデーションが実現します。

ユースケース

価格フィールド、数量制限、ページネーションパラメータ、評価スコア、または定義された範囲内に収まる必要がある数値API入力に数値制約を使用します。

試してみる — JSON Schema Generator

フルツールを開く