Проблема: -
Требование разрешить только те имена свойств в объекте, которые являются частью значения массива другого свойства в схеме (имена свойств, зависящие от значения другого свойства).
Подробное объяснение: -
У меня есть следующее json
{
"validResources":["ip","domain","url"],
"resources":
{
"ip" : "192.168.1.1",
"domain" : "www.example.com",
}
}
Я хотел бы написать схему json, которая позволяет только те ключи в «ресурсах», которые являются частью значения списка массивов «validResources».
Приведенный выше json является действительным json, поскольку ключи «ip» и «domain» фактически являются частью элементов массива, который является значением свойства validResources. Однако приведенный ниже json должен возвращать ошибку, поскольку «file» не является допустимым ресурсом, поскольку он не является частью массива «validResorces».
{
"validResources":["ip","domain","url"],
"resources":
{
"ip" : "192.168.1.1",
"file" : "file://etc/passwd" <= No such resource in "validResources"
}
}
Что я пробовал?
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type" : "object",
"properties" : {
"validResources" : { "type" : "array",
"minItems" : 1,
"uniqueItems" : true
},
"resources":{
"type":"object",
===Unable to proceed beyond this ===
}
},
}
Другие поиски:
Я проверил propertyNames , однако он может быть производным только от другой схемы или иметь шаблон регулярного выражения, определенный как часть из его схемы. Но в этом случае propertyNames / keys в пределах «resources» зависят от значения свойства «validResources», которое не известно ранее, и «resources» должен разрешать только те строки / имена, поскольку его свойства являются частью значений в списке массивов "validResources".
Существует нерешенная проблема, в чем-то похожая на этот вопрос здесь .
Любая справочная / справочная ссылка, помогающая мне решить эту проблему, приветствуется.
Спасибо !!