如果对象为空或具有所需属性,我如何使用 JSON 方案进行验证?

How can I validate with JSON scheme if object is empty or have required properties?

我想验证一个 JSON 对象数组,其中包含函数中的架构。这些对象必须恰好具有以下格式之一:

我试图在 oneOf 中包装所需的属性,但出现以下错误:Invalid input: data[1].prop should match exactly one schema in oneOf

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "prop": {
                "type": "object",
                "properties": {
                    "name": {
                        "prop1": "string"
                    },
                    "type": {
                        "prop2": "string"
                    },
                    "amount": {
                        "prop3": "number"
                    },
                    "operation": {
                        "prop4": "string"
                    }
                },
                "oneOf": [
                    { "required": ["prop1", "prop2", "prop3", "prop4"] },
                    { "required": [] }
                ]
            }
        }
    }
}

我会将 oneOf 移出,使其位于 items 关键字下方。

在其中一个子模式中,对于这些属性 plusadditionalProperties: false,您有 properties 关键字和 required 关键字。这部分将满足 "exactly four properties" 条件。

在另一个子模式中,只需确定它需要是一个对象,但不要声明任何属性。在这一个中也使用 additionalProperties: false 。这满足"empty object"条件。