В AJV я пытаюсь добиться этого:
properties: {
structure_type: {
type: "string",
enum: ['A','B','C']
},
}
if: {
properties: {
structure_type: {
const: 'A'
}
}
},
then: {
properties: {
floors: {'$ref': "#/definitions/floors"}
},
required: ['floors']
},
required: ["structure_type"],
additionalProperties: false,
Мне требуется свойство floors
, только если свойство structure_type
равно A
. Но я также не хочу разрешать свойство floors
, когда свойство structure_type
- это что-то, кроме A
По какой-то причине я получаю эту ошибку:
{
"keyword": "additionalProperties",
"dataPath": "",
"schemaPath": "#/additionalProperties",
"params": {
"additionalProperty": "floors"
},
"message": "should NOT have additional properties"
}
для ввода:
{
structure_type: 'A',
floors: [*CONTENT_NOT_IMPORTANT*]
}
Кажется, AJV считает, что свойство floors
не определено, но оно есть!(then
tho)
РЕДАКТИРОВАТЬ: Я думал о not: {required: ["floors"]}
, но даже это работает, это нарушает мою обработку ошибок.(Вместо additionalProperties
ошибка, я получаю not
ошибка)