JSONSchema 关键字 "type" 封装在 "items" 中时无法验证

JSONSchema keyword "type" when encased inside "items" fails to validate

我正在尝试编写一个 json 验证器来在运行前检查文件,但是使用“类型”时出现了一个非常奇怪的问题。

我知道“type”是一个保留字,但 json如果它没有值配对,Schema 就没有问题,正如我在另一个问题中发现的那样:Key values of 'key' and 'type' in json schema.

他们问题的解决方案是将 "type": { "type": "string"} 封装在“属性”中,它确实有效。但是,我的实现要求它位于数组中。这是我的代码片段:

{
    "type": "object",
    "additionalProperties": false,
    "properties":{
        "method":{
            "type": "array",
            "items":{
                "type": {
                    "type": "string"
                },
                "name":{
                    "type": "string"
                },
                "provider": {
                    "type": "array"
                }
            }
        }
    }
}

奇怪的是,VScode 当它被隔离时在文件中没有问题,但当它包含在主代码中时,它不喜欢它并且没有产生解决方案。无论如何,用 python 验证它会产生:

...
raise exceptions.SchemaError.create_from(error)
jsonschema.exceptions.SchemaError: {'type': 'string'} is not valid under any of the given schemas

Failed validating 'anyOf' in metaschema['allOf'][1]['properties']['properties']['additionalProperties']['$dynamicRef']['allOf'][1]['properties']['items']['$dynamicRef']['allOf'][3]['properties']['type']:
    {'anyOf': [{'$ref': '#/$defs/simpleTypes'},
               {'items': {'$ref': '#/$defs/simpleTypes'},
                'minItems': 1,
                'type': 'array',
                'uniqueItems': True}]}

On schema['properties']['method']['items']['type']:
    {'type': 'string'}

更让我困惑的是 https://www.jsonschemavalidator.net/ 告诉我 Expected array or string for 'type', got StartObject. Path 'properties.method.items.type', line 8, position 17. 然而 JSON Schema Faker 能够毫无问题地生成假文件。当使用 python 和 JSONSchemaValidator.

验证时,生成的假 json 也 returns 同样的错误

我是初学者,非常感谢任何帮助或见解,感谢您抽出时间。

编辑:这是要求的输入数据片段。

{
...
    "method": [
        {
            "type": "action",
            "name": "name of the chaos experiment to use here",
            "provider": [
                ]
            }
        }
    ]
}

数组没有属性;数组有项目。您包含的架构无效;你确定你不想拥有这个吗?

{
    "type": "object",
    "additionalProperties": false,
    "properties":{
        "method":{
            "type": "array",
            "items":{
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string"
                    },
                    "name":{
                        "type": "string"
                    },
                    "provider": {
                        "type": "array"
                    }
                }
            }
        }
    }
}