Я пытаюсь создать сложную схему, которая проверит значение свойства и затем проверит в соответствии со значением этого же свойства.Мне интересно, возможно ли использовать $ ref и allOf в одной и той же схеме, и если да, то как?У меня возникли проблемы с тем, чтобы заставить это работать.Может быть важно отметить, что я использую AJV.Пожалуйста, смотрите мой код ниже
{
"$ref": "#/definitions/Welcome",
"definitions": {
"Welcome": {
"properties": {
"auth": {
"type": "string",
"enum": ["oauth1","oauth2"]
},
"environment": {
"$ref": "#/definitions/Environment"
}
}
},
"Environment": {
"properties": {
"dev": {
"type": "object"
}
}
},
"Oauth1": {
"type": "object",
"properties": {
"temporary_credentials": {
"type": "string"
}
}
},
"Oauth2": {
"type": "object",
"properties": {
"auth_url": {
"type": "string"
}
}
}
},
"allOf": [
{
"if": {
"auth": {
"const": "oauth1"
}
},
"then": {
"environment": {
"dev": {
"$ref": "#/definitions/Oauth1
}
}
}
},
{
"if": {
"auth": {
"const": "oauth2"
}
},
"then": {
"environment": {
"dev": {
"$ref": "#/definitions/Oauth2
}
}
}
}
]
}
Пример ввода json для проверки по этой схеме будет выглядеть примерно так
{
"auth": "oauth1",
"environment": {
"dev": {
"temporary_credentials": "xyzzy"
}
}
}
Я чувствую, что может бытьошибка в моих «тогда» заявлениях или просто в размещении allOf.Ошибка, которую я получу, выглядит примерно так: «$ ref: ключевые слова игнорируются в схеме по пути« # »».