如何使用带有 Python 的 jsonschema 验证字典列表

How to validate a list of dictionaries using jsonschema with Python

我有这样一个字典列表:

list_of_dictionaries = [{'key1': True}, {'key2': 0.2}]

我想使用 jsonschema 包验证它。

我创建了一个这样的模式:

schema = {
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "key1": {
                "type": "boolean"
            },
            "key2": {
                "type": "number"
            }
        },
        "required": ["enabled"]
    }
}

但这对我的列表来说不正确,因为要使其有效,我的列表应该是这样的:

list_dict = [{'key1': True, 'key2': 0.5}]

如何创建正确的模式来验证我的列表? 提前谢谢你。

我认为您可能希望使用 oneOf 结构。基本上,您要描述的列表可以包含任意数量的两种不同类型的对象。

这是一个使用示例:

{
  "type": "array",
  "items": {
    "$ref": "#/defs/element"
  },
  "$defs": {
    "element": {
      "type": "object",
      "oneOf": [
        {
          "$ref": "#/$defs/foo"
        },
        {
          "$ref": "#/$defs/bar"
        }
      ]
    },
    "foo": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "key1": {
          "type": "boolean"
        }
      },
      "required": [
        "key1"
      ]
    },
    "bar": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "key2": {
          "type": "boolean"
        }
      },
      "required": [
        "key2"
      ]
    }
  }
}

还有 anyOfallOf 组合器可能对您有用。查看 jsonschema's documentation on combining 了解更多信息。