Как проверить, если в следующем JSON свойство isCorrect
имеет значение true
строго один раз. Думайте о нем, как о вопросе с несколькими вариантами ответов только с одним ответом, поэтому в массиве может быть много элементов, но ответ может быть верным только один раз во всех элементах.
"answers": [
{
"id": 1,
"text": "choice1",
"isCorrect": true
},
{
"id": 1,
"text": "choice2",
"isCorrect": true
},
{
"id": 1,
"text": "choice3",
"isCorrect": false
},
{
"id": 1,
"text": "choice4",
"isCorrect": false
}
]
}
Я использовал contains
для проверки если хотя бы один из элементов удовлетворяет условию, но он проверяется, даже если существует более 1 элемента с isCorrect
, равным true
, поэтому я использовал maxContains
, но он не работает.
Моя схема:
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://eg.com/schema2.json",
"type": "object",
"title": "Example",
"required": ["answers"],
"properties": {
"answers": {
"type": "array",
"contains": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"text": {
"type": "string"
},
"isCorrect": {
"type": "boolean",
"enum": [true]
}
}
},
"maxContains": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"text": {
"type": "string"
},
"isCorrect": {
"type": "boolean"
}
}
}
}
}
}
Этот экземпляр не должен проверяться, поскольку он имеет значение true
, встречающееся дважды для isCorrect
, и схема упоминает maxContains
как 1, однако он не работает. Что я делаю не так, неправильно ли размещено maxContains
? Любая помощь приветствуется!