0
В приведенной ниже модели свойство category_id должно быть необходимо, только если массив «detail» пуст.Подтвердить свойство против другого с помощью схемы JSON
Если массив «detail» не пуст, свойство «category_id» не требуется.
Как я могу это сделать с помощью схемы JSON?
{
"description": "Expense model validation.",
"type": "object",
"properties": {
"description": {
"type": "string"
},
"category_id": {
"type": "string"
},
"detail": {
"type": "array",
"items": {
"description": "Expense detail",
"type": "object",
"properties": {
"description": {
"type": "string"
}
},
"required": [ "description" ]
}
}
},
"required": [ "description", "category_id" ]
}
Использование anyOf, проверка была успешной только в этом случае: { "Описание": "Расход", "деталь": [{ "Описание": "Расход детали" }] } но этот запрос должен быть действительным, но не было: { «описание»: «Расходы», «category_id»: «555cf4fa5a98e36338886ca6» } Однако я изменил использовать oneOf вместо anyOf и он работал отлично! Tks очень много! – Diogo
@ Diogo, я не получаю таких же результатов, как вы. Оба примера, которые вы даете, правильно проверяют для меня. 'oneOf' должен работать, кроме случая, когда присутствуют' category_id' и 'detail'. 'oneOf' требует проверки только одной (не обеих) схем. Если размещенная вами схема не работает, может возникнуть проблема с используемым валидатором. – Jason
Вы правы, anyOf отлично работает. Это была ошибка в моей тестовой полезной нагрузке. Ткс снова! – Diogo