Учитывая эту схему:
{
"type": "object",
"patternProperties": {
"^(.*)$": {
"type": "object",
"patternProperties": {
"^.*$": {
"oneOf": [
{
"type": "string",
"enum": ["Token1", "Token2", "Token3"]
}
]
}
}
}
}
}
Я могу проверить такие данные:
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "Token1",
"otherprop2": "Token3"
}
}
т. е. каждое значение свойства в объекте верхнего уровня должно быть в перечислении ["Token1", "Token2", "Token3"]
. Если я установлю Token4
в качестве значения, проверка не пройдет, как и ожидалось.
Можно ли сопоставить значение шаблона группы захвата ^(.*)$
и добавить еще одно правило под oneOf
, которое подразумевает: ИЛИ значение находится в наборе имен объектов (верхнего уровня)? Чтобы успешно проверить что-то подобное:
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "myobject", <- note this
"otherprop2": "Token3"
}
}
но терпит неудачу в
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "non-existing-object", <- note this
"otherprop2": "Token3"
}
}
и предпочтительно/необязательно проверяет базовую рекурсию, чтобы также не выполнить этот ввод:
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "anotherobject", <- note this
"otherprop2": "Token3"
}
}