Получение имен свойств из значений другого перечисляемого ключа в jsonschema - PullRequest
0 голосов
/ 13 марта 2020

Проблема: -

Требование разрешить только те имена свойств в объекте, которые являются частью значения массива другого свойства в схеме (имена свойств, зависящие от значения другого свойства).

Подробное объяснение: -

У меня есть следующее 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".

Существует нерешенная проблема, в чем-то похожая на этот вопрос здесь .

Любая справочная / справочная ссылка, помогающая мне решить эту проблему, приветствуется.

Спасибо !!

1 Ответ

0 голосов
/ 13 марта 2020

Такая проблема не может быть решена на дату с json схемой, где черновик 7 является последним черновиком при написании этого поста.

Этот вопрос также относится к множеству проблем, уже упомянутых в выпусках github json -схема спец c. Видимо, предложение, связанное с решением такой проблемы, активно отслеживается здесь .

Поскольку речь идет о поиске по значению экземпляра схемы json, а не только о структурной проверке (которая была основным мотивом существования стандарта схемы json на дату), это, вероятно, имеет будет рассматриваться иначе, пока не придет следующий черновик или не будет рассмотрен упомянутый вопрос.

...