JSON Schemaの数値制約 — minimum、maximum、multipleOf
サンプルデータからJSON Schemaを生成した後に、minimum、maximum、exclusiveMinimum、multipleOf で数値型と整数型を改善する方法を学びます。
Basic Types
詳細な説明
生成されたスキーマの数値型の改善
ジェネレーターが 42 や 19.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" に変更してください。
他のキーワードとの組み合わせ
数値制約は enum、oneOf(異なるコンテキストでの異なる範囲)、if/then(条件付き範囲)と自然に組み合わせることができます。この柔軟性により、金融、科学、設定のユースケースにも対応できるJSON Schemaの数値バリデーションが実現します。
ユースケース
価格フィールド、数量制限、ページネーションパラメータ、評価スコア、または定義された範囲内に収まる必要がある数値API入力に数値制約を使用します。