参考

数字类型

JSON Schema 中有两个数字类型:整数数字。它们共享相同的验证 关键字

JSON 没有标准方法来表示复数,因此无法在 JSON Schema 中对其进行测试。

整数

integer 类型用于整数。JSON 没有区分整数和浮点数的类型。因此,小数点的存在与否不足以区分整数和非整数。例如,11.0 是在 JSON 中表示相同值的两种方式。JSON Schema 无论使用哪种表示方式,都认为该值是整数。

特定于语言的信息:
Python
Ruby
Objective-C
Swift
在 Python 中,“integer”类似于 int 类型。
模式
{ "type": "integer" }
数据
42
符合模式
数据
-1
符合模式

具有零小数部分的数字被视为整数

数据
1.0
符合模式

拒绝浮点数

数据
3.1415926
不符合模式

拒绝作为字符串的数字

数据
"42"
不符合模式

数字

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
不符合模式

范围

使用 minimummaximum 关键字的组合来指定数字范围(或 exclusiveMinimumexclusiveMaximum 来表示排除范围)。

如果 *x* 是要验证的值,则以下必须成立

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

虽然您可以同时指定 minimumexclusiveMinimum 或同时指定 maximumexclusiveMaximum,但这实际上没有意义。

模式
{ "type": "number", "minimum": 0, "exclusiveMaximum": 100}

小于 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
符合模式

exclusiveMaximumtrue,因此不包含 100

数据
100
不符合模式

大于 maximum

数据
101
不符合模式

需要帮助?

您觉得这些文档有用吗?

帮助我们使我们的文档变得更好!

在 JSON Schema 中,我们像其他任何类型的贡献一样重视文档贡献!

仍然需要帮助?

学习 JSON Schema 常常令人困惑,但别担心,我们来帮忙!.