Свойства переменных в схеме JSON

У меня есть следующий пример JSON, для которого я хочу написать схему JSON. Ограничение состоит в том, что свойство2 содержит список строк, которые являются динамическими в зависимости от набора данных. А в объекте property3 некоторые свойства названы после этих строк.

 {
   "property1": "value",
   "property2": ["value1","value2","value2"],
   "property3": {
                   "title": "test",
                   "value1": "hello",
                   "value2": "world"
    }
 }

Схема JSON может выглядеть так, но я не знаю, как описать эти динамические свойства. Это возможно?

 {
   "title": "Test Object",
   "type": "object",
   "properties": {
              "property1": {
                     "type": "string"
               }
              "property1": {
                     "type": "array"
               }
              "property3": {
                     "type": "object",
                     "properties": {
                               "title": {
                                     "type": "string"
                               }
                               [ Something is missing here ]
                      }
               }
    }
 }

person linsenfips    schedule 21.08.2014    source источник


Ответы (1)


Вы не можете связать значения свойств с ключами свойств с помощью Json-Schema (начиная с Draft v4).

Вы можете:

  • Определите свойство2 как схему и сделайте ссылку на нее (#ref) из свойства3 (зависимости, allOf, anyOf, additionalProperties ...). Если в вашем случае эти имена свойств очень динамичны, вы можете построить эту схему на лету.
  • Используйте patternProperties, чтобы ограничить допустимые имена свойств в property3 некоторым фиксированным регулярным выражением.
person jruizaranguren    schedule 28.08.2014