リファレンス

数値型

JSONスキーマには、integernumberの2つの数値型があります。これらは同じ検証キーワードを共有します。

JSONには複素数を表現する標準的な方法がないため、JSONスキーマで複素数をテストする方法はありません。

integer

integer型は整数に使用されます。JSONには、整数と浮動小数点値を区別する型がありません。したがって、小数点の有無だけでは、整数と非整数を区別するのに十分ではありません。たとえば、11.0は、JSONで同じ値を表す2つの方法です。JSONスキーマは、どちらの表現が使用されたかに関係なく、その値を整数と見なします。

言語固有の情報:
Python
Ruby
Objective-C
Swift
Pythonでは、「integer」はint型に相当します。
スキーマ
{ "type": "integer" }
データ
42
スキーマに準拠
データ
-1
スキーマに準拠

小数部がゼロの数値は整数とみなされます

データ
1.0
スキーマに準拠

浮動小数点数は拒否されます

データ
3.1415926
スキーマに準拠していません

文字列としての数値は拒否されます

データ
"42"
スキーマに準拠していません

number

number型は、整数または浮動小数点数など、あらゆる数値型に使用されます。

言語固有の情報:
Python
Ruby
Objective-C
Swift
Pythonでは、「number」はfloat型に相当します。
スキーマ
{ "type": "number" }
データ
42
スキーマに準拠
データ
-1
スキーマに準拠

単純な浮動小数点数

データ
5.0
スキーマに準拠

指数表記も有効です

データ
2.99792458e8
スキーマに準拠

文字列としての数値は拒否されます

データ
"42"
スキーマに準拠していません

倍数

数値は、multipleOfキーワードを使用して、指定された数値の倍数に制限できます。任意の正の数値に設定できます。

スキーマ
{/* ... 省略 */} "type": "number",{/* ... 省略 */} "multipleOf" : 10 {/* ... 省略 */}
データ
0
スキーマに準拠
データ
10
スキーマに準拠
データ
20
スキーマに準拠
データ
23
スキーマに準拠していません

倍数は浮動小数点数にすることができます

スキーマ
{/* ... 省略 */} "type": "number",{/* ... 省略 */} "multipleOf" : 0.01 {/* ... 省略 */}
データ
4.02
スキーマに準拠
データ
4.021
スキーマに準拠していません

範囲

数値の範囲は、minimumキーワードとmaximumキーワード(または排他的範囲を表すexclusiveMinimumexclusiveMaximum)を組み合わせて指定します。

検証される値を *x* とすると、以下の条件が真である必要があります。

*x* ≥ minimum
*x* > exclusiveMinimum
*x* ≤ maximum
*x* < exclusiveMaximum

minimumexclusiveMinimumの両方、またはmaximumexclusiveMaximumの両方を指定できますが、実際にはそうする意味はありません。

スキーマ
{/* ... 省略 */} "type": "number",

minimumより小さい

データ
-1
スキーマに準拠していません

minimumは包含的なので、0は有効です

データ
0
スキーマに準拠
データ
10
スキーマに準拠
データ
99
スキーマに準拠

exclusiveMaximumは排他的なので、100は無効です

データ
100
スキーマに準拠していません

maximumより大きい

データ
101
スキーマに準拠していません
ドラフト固有の情報:
ドラフト4

JSON Schemaドラフト4では、exclusiveMinimumexclusiveMaximumの動作が異なります。そこでは、それらはブール値であり、minimummaximumが値から除外されているかどうかを示します。例えば

exclusiveMinimumfalseの場合、*x* ≥ minimum
exclusiveMinimumtrueの場合、*x* > minimumです.

これは、キーワードの独立性を高めるために変更されました。

古いドラフト4の規則を使用した例を以下に示します。

スキーマ
{ "type": "number", "minimum": 0, "maximum": 100, "exclusiveMaximum": true}

`minimum`より小さい: json // props { "indent": true, "valid": false } -1 `exclusiveMinimum`は指定されていないため、0が含まれます

データ
0
スキーマに準拠
データ
10
スキーマに準拠
データ
99
スキーマに準拠

`exclusiveMaximum`はtrueなので、100は含まれません

データ
100
スキーマに準拠していません

maximumより大きい

データ
101
スキーマに準拠していません

お困りですか?

このドキュメントはお役に立ちましたか?

ドキュメントの改善にご協力ください!

JSON Schemaでは、ドキュメントへの貢献は他のあらゆる種類の貢献と同じくらい重要視しています!

まだお困りですか?

JSON Schemaの学習は難解な場合が多いですが、ご安心ください。お手伝いいたします。