Arrays jsonschema:验证数组是否包含元素,而不会在其他元素上出错
我最近发现了jsonschema,我一直很喜欢使用它,但是最近我遇到了一些我想做的事情,我就是想不出来 我要做的是验证数组必须包含与模式匹配的元素,但我不希望在列表中的其他元素上验证失败 假设我有一个如下所示的数组:Arrays jsonschema:验证数组是否包含元素,而不会在其他元素上出错,arrays,json,validation,schema,jsonschema,Arrays,Json,Validation,Schema,Jsonschema,我最近发现了jsonschema,我一直很喜欢使用它,但是最近我遇到了一些我想做的事情,我就是想不出来 我要做的是验证数组必须包含与模式匹配的元素,但我不希望在列表中的其他元素上验证失败 假设我有一个如下所示的数组: arr = [ {"some object": True}, False, {"AnotherObj": "a string this time"}, "test" ] 我希望能够执行类
arr = [
{"some object": True},
False,
{"AnotherObj": "a string this time"},
"test"
]
我希望能够执行类似“验证arr是否包含具有布尔属性“some object”的对象,如果没有,则会出错,但不关心其他元素。”
我不希望它验证列表中的其他项。我只想确保列表中包含至少一次与模式匹配的元素。我也不知道元素在数组中到达的顺序
我已经尝试过这样的模式,如:
{"type": "array",
"items": {
"type": "object",
"properties": {
"tool": {
# A schema here to validate tool
},
"required": ["tool"]
}
}
问题是它要求数组中的每个项都具有属性“tool”,而不是我真正想要的
任何人能在这方面给我任何帮助都将不胜感激!我在这个问题上被难住了很长时间,没有任何进展
谢谢 我得到了这个问题的答案: 使用的模式是(其中…B…是需要的模式):
它基本上是类似于“确保不匹配(项目与B不匹配)”。我不是100%清楚为什么会这样,但我想我会为后代分享它。更好的说法是:“确保不是(所有项目都与B不匹配)”。
{
"type": "array",
"not": {
"items": {
"not": {... B ...}
}
}
}