参考
数字类型
JSON Schema 中有两个数字类型:整数 和 数字。它们共享相同的验证 关键字。
JSON 没有标准方法来表示复数,因此无法在 JSON Schema 中对其进行测试。
整数
integer
类型用于整数。JSON 没有区分整数和浮点数的类型。因此,小数点的存在与否不足以区分整数和非整数。例如,1
和 1.0
是在 JSON 中表示相同值的两种方式。JSON Schema 无论使用哪种表示方式,都认为该值是整数。
int
类型。具有零小数部分的数字被视为整数
拒绝浮点数
拒绝作为字符串的数字
数字
number
类型用于任何数字类型,包括整数或浮点数。
float
类型。简单的浮点数
指数表示法也适用
拒绝作为字符串的数字
倍数
可以使用 multipleOf
关键字将数字限制为给定数字的倍数。它可以设置为任何正数。
倍数可以是浮点数
范围
使用 minimum
和 maximum
关键字的组合来指定数字范围(或 exclusiveMinimum
和 exclusiveMaximum
来表示排除范围)。
如果 *x* 是要验证的值,则以下必须成立
*x* ≥ minimum
*x* > exclusiveMinimum
*x* ≤ maximum
*x* < exclusiveMaximum
虽然您可以同时指定 minimum
和 exclusiveMinimum
或同时指定 maximum
和 exclusiveMaximum
,但这实际上没有意义。
小于 minimum
minimum
是包含的,所以 0 是有效的
exclusiveMaximum
是排除的,所以 100 是无效的
大于 maximum
在 JSON Schema 草案 4 中,exclusiveMinimum
和 exclusiveMaximum
的工作方式有所不同。在那里,它们是布尔值,表示 minimum
和 maximum
是否排除了该值。例如
如果 exclusiveMinimum
是 false
,*x* ≥ minimum
如果 exclusiveMinimum
是 true
,*x* > minimum
。
这是为了提高关键字的独立性而更改的。
以下是用旧的草案 4 约定编写的示例
小于 minimum
: json // props { "indent": true, "valid": false } -1
exclusiveMinimum
未指定,因此包含 0
exclusiveMaximum
为 true
,因此不包含 100
大于 maximum