使用 json 模式验证数组 json 包含多个无序对象

kev*_*561 5 jsonschema

问题

我想使用 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
Run Code Online (Sandbox Code Playgroud)

目前的尝试

json schemacontains关键字不支持列表

json schemaTuple validation关键字必须有序

Rel*_*ual 6

您需要allOfapplicator 关键字。您需要定义多个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"
          }
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

现场演示在这里