使用 json 架构验证数组 json 包含多个无序对象

validate array json contains several unordered objects using json schema

问题

我想使用 json 架构草案 7 来验证数组是否包含多个无序对象。例如,数组应包含学生 A、B,而不管他们的顺序如何。

[{"name": "A"}, {"name": "B"}] //valid
[{"name": "B"}, {"name": "A"}] //valid
[{"name": "A"}, {"name": "C"}, {"name": "B"}] //extra students also valid
[] or [{"name": "A"}] or [{"name": "B"}] //invalid

当前尝试

json 架构 contains 关键字不支持列表

json 架构 Tuple validation 关键字必须排序

您需要 allOf 涂抹器关键字。您需要定义多个 contains 子句。

allOf 允许您定义必须全部通过的多个模式。

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "allOf": [
    {
      "contains": {
        "required": ["name"],
        "properties": {
          "name": {
            "const": "A"
          }
        }
      }
    },
    {
      "contains": {
        "required": ["name"],
        "properties": {
          "name": {
            "const": "B"
          }
        }
      }
    }
  ]
}

Live demo here.