Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays jsonschema:验证数组是否包含元素,而不会在其他元素上出错_Arrays_Json_Validation_Schema_Jsonschema - Fatal编程技术网

Arrays 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" ] 我希望能够执行类

我最近发现了jsonschema,我一直很喜欢使用它,但是最近我遇到了一些我想做的事情,我就是想不出来

我要做的是验证数组必须包含与模式匹配的元素,但我不希望在列表中的其他元素上验证失败

假设我有一个如下所示的数组:

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 ...}
        }
    }
}