json 模式中整数和数字的最小值和最大值不同
Different minimum and maximum for integer and number in json schema
假设我有一个架构,其中 属性 可以是整数或数字。有没有办法根据值的类型指定不同的最大值?例如:
{
"type": ["integer", "number"],
"max-if-integer": 255,
"max-if-number": 1.0
}
在文档中找不到任何相关信息。
oneOf
会成为你的朋友!
{
"oneOf": [
{ "type": "integer", "maximum": 255 },
{ "type": "number", "maximum": 1 }
]
}
如果您处于 draft7 或更高版本,if/then/else 可能是表达这一点的最佳方式。如果它更早,您可以使用 oneOf
到达那里,正如 gregsdennis 的回答中所讨论的那样。
{
"if": {"type": "integer"},
"then": {
"minimum": integer-minimum,
"maximum": integer-maximum
},
"else": {
"type": "number",
"minimum": float-minimum,
"maximum": float-maximum
}
}
但是请注意,根据 json 模式规范,1.0
和 1
都被视为整数,并且将使用整数 then
,而不是数字 else
喜欢 non-whole-number 浮动。
假设我有一个架构,其中 属性 可以是整数或数字。有没有办法根据值的类型指定不同的最大值?例如:
{
"type": ["integer", "number"],
"max-if-integer": 255,
"max-if-number": 1.0
}
在文档中找不到任何相关信息。
oneOf
会成为你的朋友!
{
"oneOf": [
{ "type": "integer", "maximum": 255 },
{ "type": "number", "maximum": 1 }
]
}
如果您处于 draft7 或更高版本,if/then/else 可能是表达这一点的最佳方式。如果它更早,您可以使用 oneOf
到达那里,正如 gregsdennis 的回答中所讨论的那样。
{
"if": {"type": "integer"},
"then": {
"minimum": integer-minimum,
"maximum": integer-maximum
},
"else": {
"type": "number",
"minimum": float-minimum,
"maximum": float-maximum
}
}
但是请注意,根据 json 模式规范,1.0
和 1
都被视为整数,并且将使用整数 then
,而不是数字 else
喜欢 non-whole-number 浮动。