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