jsonschema中是否有任何机制为数组定义自定义验证器?

时间:2020-06-30 01:03:57

标签: jsonschema python-jsonschema

我希望能够编写jsonschema片段,例如:

{
   "type":"array",
   "items":{
      "type":"number",
      "lag":2
   }
}

在一个数字数组(其值全为2)上成功:例如

[ 1, 3, 5, 7 ]

我能够将自定义格式描述为从列表到bool的函数。

这可能吗?

3 个答案:

答案 0 :(得分:1)

不,没有。您可以在此处找到可用的数组验证: 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 但这当然只是您要实现的目标的一部分。

答案 1 :(得分:0)

如果您的字面意思是奇数,则可以执行以下操作:

{
   "type":"array",
   "items":{
      "allOf": [{"type":"number"}, {"not": {"multipleOf": 2}}],
   }
}

答案 2 :(得分:0)

这很简单。我定义了一个自定义验证器https://python-jsonschema.readthedocs.io/en/stable/creating/。 不幸的是,我必须在验证器内部进行验证,以确保实例是一个数字数组。