有没有办法使JSON模式属性成为数字或null
?
我正在构建一个包含heading
属性的API。可以是介于0(包含)和360(不包含)之间的数字,也可以是空值,因此可以输入以下内容:
{"heading": 5}
{"heading": 0}
{"heading": null}
{"heading": 12}
{"heading": 120}
{"heading": null}
以下输入错误:
{"heading": 360}
{"heading": 360.1}
{"heading": -5}
{"heading": false}
{"heading": "X"}
{"heading": 1200}
{"heading": false}
附录:
anyOf
显然是正确的答案。为了清晰起见,添加完整的模式。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"heading": {
"anyOf": [
{"type": "number"},
{"type": "null"}
]
}
}
}
在草案-04中,您将使用anyOf指令:
您也可以像亚当建议的那样使用“type”:[“number”,“null”],但是我认为任何一个都比较干净(只要您使用draft-04实现),并且将最小和最大声明显式地绑定到数字。
免责声明:我对python实现一无所知,我的答案是关于json模式。
诀窍是使用类型数组。而不是:
使用:
以下代码强制执行数字或空策略,如果值是数字,则加上数字限制:
它给出:
相关问题 更多 >
编程相关推荐