我定义了以下架构:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/schemas/test",
"type": "object",
"properties": {
"A": {
"type": "string"
}
},
"oneOf": [
{
"properties": {
"B": {
"type": "integer"
},
"C": {
"type": "boolean"
}
}
},
{
"properties": {
"D": {
"type": "string"
}
}
}
]
}
这个想法是模式包含 A,以及 B、C 或 D。没有任何元素是必需的。
以下实例无法验证:
{
"A": "world"
}
我相信您想要
anyOf
而不是 oneOf
,因为 oneOf
检查 恰好一个 子模式,但在您的测试实例中您没有子模式之一。文档位于:https://json-schema.org/understanding-json-schema/reference/combining#oneOf,您可以在此处测试您的架构:https://json-schema.hyperjump.io/这就是我发现 anyOf
适用于您的情况的地方。