То, что я пытаюсь выполнить в json-схеме: когда свойство enabled
равно true
, должны потребоваться некоторые другие свойства. Когда false
, эти свойства следует запретить.
Вот моя json-схема:
{
"type": "object",
"properties": {
"enabled": { "type": "boolean" }
},
"required" : ["enabled"],
"additionalProperties" : false,
"if": {
"properties": {
"enabled": true
}
},
"then": {
"properties": {
"description" : { "type" : "string" },
"count": { "type": "number" }
},
"required" : ["description", "count"]
}
}
При проверке с использованием ajv
версии 6.5 это привело к требованию count
и т. Д. Независимо от значения enabled
. Например, для данных:
{ "enabled": false }
Мои ошибки проверки:
[ { keyword: 'required',
dataPath: '',
schemaPath: '#/then/required',
params: { missingProperty: 'description' },
message: 'should have required property \'description\'' },
{ keyword: 'required',
dataPath: '',
schemaPath: '#/then/required',
params: { missingProperty: 'count' },
message: 'should have required property \'count\'' },
{ keyword: 'if',
dataPath: '',
schemaPath: '#/if',
params: { failingKeyword: 'then' },
message: 'should match "then" schema' } ]
Как это сделать с помощью json-schema draft-7
?
Обратите внимание, что этот вопрос похож на, но имеет более строгие требования, чем:
условно обязательный атрибут jsonSchema.