使用 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"
}
}
}
}
]
}
问题
我想使用 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"
}
}
}
}
]
}