То, что я пытаюсь выполнить в 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-схему draft-7
?
Обратите внимание, чтоэтот вопрос похож, но имеет более строгие требования, чем:
атрибут jsonSchema, условно обязательный .