如果对象为空或具有所需属性,我如何使用 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
关键字下方。
在其中一个子模式中,对于这些属性 plus 和 additionalProperties: false
,您有 properties
关键字和 required
关键字。这部分将满足 "exactly four properties" 条件。
在另一个子模式中,只需确定它需要是一个对象,但不要声明任何属性。在这一个中也使用 additionalProperties: false
。这满足"empty object"条件。
我想验证一个 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
关键字下方。
在其中一个子模式中,对于这些属性 plus 和 additionalProperties: false
,您有 properties
关键字和 required
关键字。这部分将满足 "exactly four properties" 条件。
在另一个子模式中,只需确定它需要是一个对象,但不要声明任何属性。在这一个中也使用 additionalProperties: false
。这满足"empty object"条件。