我希望能够编写一个 jsonschema 片段,例如:
{
"type":"array",
"items":{
"type":"number",
"lag":2
}
}
它在一个数值全为 2 的数字数组上成功:例如
[ 1, 3, 5, 7 ]
我能够将自定义格式描述为从列表到布尔的函数。
这可能吗?
我希望能够编写一个 jsonschema 片段,例如:
{
"type":"array",
"items":{
"type":"number",
"lag":2
}
}
它在一个数值全为 2 的数字数组上成功:例如
[ 1, 3, 5, 7 ]
我能够将自定义格式描述为从列表到布尔的函数。
这可能吗?
不,那里没有。您可以在此处找到可用的数组验证: https ://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.4
您可以指定一个数字必须是 x 的倍数: https ://json-schema.org/understanding-json-schema/reference/numeric.html#multiples 但当然这只是您想要实现的一部分。
如果你的字面意思是奇数,你可以这样做:
{
"type":"array",
"items":{
"allOf": [{"type":"number"}, {"not": {"multipleOf": 2}}],
}
}
这很简单。我定义了一个自定义验证器https://python-jsonschema.readthedocs.io/en/stable/creating/。不幸的是,我必须在验证器中验证该实例是一个数字数组。