jsonschema通过具有不同名称或类型的键进行验证

时间:2019-01-02 23:50:36

标签: python json jsonschema json-schema-validator python-jsonschema

我正在从这种json类型过渡:

entity

{
    "id": 1,
    "data": {
         "item_number": "4",
         ...
    }
}

我需要一个与这两个json都匹配的jsonschema。

这是:

{
    "id": 1,
    "data": {
        "itemNumbers": [4],
        ...
    }
}

使用python jsonschema软件包,它与所有json匹配,无论项目编号如何。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您将需要将anyOf修改为oneOf(这不会更改您当前的架构,而是使意图更清晰),并将additionalProperties: false添加到每个亚计划。

在您的架构中,"item_number": "4"对anyOf [0]的验证失败,但对anyOf [1]的验证失败,因为对item_number或未定义的属性没有约束。

additionalProperties: false表示properties中未包含为键的任何属性都将导致验证失败。