РЕДАКТИРОВАТЬ:
Лучше и короче схема с самоопределением, вы можете попробовать онлайн
anyOf
лучше, чем oneOf
, поскольку oneOf
необходимо проверить по всем элементам, чтобы убедиться, что есть только один проход, но anyOf
может остановиться после первого прохода, пропуская другие элементы.
{
"anyOf": [
{
"enum": ["A", "B"]
},
{
"type": "object",
"additionalProperties": {
"$ref": "#"
}
}
]
}
anyOf
на уровне корня, необходимого для обхода ограничения JSON Schema, согласно которому $ref
игнорирует все родственные ключевые слова.
Проверено с помощью ajv cli
{
"anyOf": [
{"$ref": "#/definitions/Foo"}
],
"definitions": {
"Foo": {
"oneOf": [
{
"enum": ["A", "B"]
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/Foo"
}
}
]
}
}
}