Я создаю схему, состоящую из нескольких категорий. В каждой категории есть массив пар ключ: значение. Каждый ключ представляет отображаемое имя значения. Каждое значение уникально и может быть присвоено только одному ключу и категории.
Например, категория под названием «приматы» будет иметь «человек» в качестве одного из ключевых / отображаемых имен, а биологическое имя «Homo sapiens» будет соответствующим значением пары ключ: значение.
Я хочу проверить ввод данных, чтобы данные совпадали только с одним из ключевых / отображаемых имен. Я поставил anyOf
для категорий, он выполняет ту же работу? Так вы расставите элементы в схеме?
{
"$schema": "https://example.com/schema/dictionary",
"$id": "https://example.com/schemaoutput/dictionary",
"description": "A schema that validates the minimum requirements for validation output",
"type": "array",
"items": {
"additionalProperties": false,
"properties": {
"subcat1": {
"type": "string",
"title": "category1",
"tag": [
{
"display_labelA": [
"class_A"
],
"display_labelB": [
"class_B"
]
}
]
},
"subcat2": {
"type": "string",
"title": "category2",
"tag": [
{
"display_labelC": [
"class_C"
],
"display_labelD": [
"class_D"
]
}
]
}
},
"anyOf": [
{
"required": [
"subcat1",
"subcat2"
]
}
]
}
}
Редактировать:
В соответствии с просьбой я обновил сообщение с ожидаемыми сценариями прохождения и отказа. Например, я хочу создать схему json, содержащую разные категории животных в животном мире. Каждая пара ключ: значение относится к общеизвестному кличке животного и соответствующему научному названию. Принимаются только данные об общеизвестных именах животных.
Сценарии прохождения:
- Запись данных «человек» будет принята, поскольку это одна из пар ключ: значение (человек: Homo sapiens) категории «приматы».
- Также допускается ввод данных «шимпанзе». Это также одна из пар ключ: значение (шимпанзе: пан троглодиты) категории «приматы».
- Допускается ввод данных «лосось». Его пара ключ: значение (Лосось: Salmo salar Linnaeus) относится к другой категории «рыба».
Сценарии сбоя:
- Любые данные, не указанные в словаре животного мира, не принимаются, например, Груша, Апельсины, Стол, Стулья…