схема json для динамического массива

У меня есть следующий json

    {
        "Dettype": "QTY",
 "Details": [
     {
  "12568": {
    "Id": 12568,
    "qty":1,
    "Freq":"2",
    "Option": 0,
    "promote":"yes"
  },
  "22456": {
    "Id": 22456,
    "qty":2,
    "Freq":"3",
    "Option": 1,
    "promote":"no"
  }
     }
 ]
}

Для приведенного выше json мне нужно написать файл схемы json, который будет проверять запрос.

но проблема в том, что в массиве значение ключа для каждого элемента изменяется динамически. Если это какое-то постоянное значение, я могу написать, но не знаю, как сделать динамический шаблон

Схема JSON, которую я получил

{
"type": "object",
"additionalProperties": true,
"properties": {
    "Dettype": {
        "type": "string"
    },
    "Details": {
        "type": "array",
        "items": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
                "**DYNAMIC VALUE**": {
                    "type": "object",
                    "additionalProperties": true,
                    "properties": {
                        "Id": {
                            "type": "integer"
                        },
                        "qty": {
                            "type": "integer"
                        },
                        "Freq": {
                            "type": "string"
                        },
                        "Option": {
                            "type": "integer"
                        },
                        "promote": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    }
}

}

Может ли кто-нибудь сказать, какие изменения нужно сделать для схемы


person mnvbrtn    schedule 27.05.2015    source источник
comment
Почему в массив встроен один объект? Почему это не сам объект?   -  person fge    schedule 28.05.2015


Ответы (2)


Для этого предназначен patternProperties.

Здесь кажется, что ваши ключи-члены объекта всегда являются цифрами; поэтому вы можете написать что-то вроде этого:

"type": "object",
"patternProperties": {
    "^\\d+$": {
        "type": "object",
        "etc": "etc"
    }
}
person fge    schedule 28.05.2015

Вы также можете использовать дополнительные свойства, если хотите, чтобы все свойства соответствовали некоторой схеме:

{
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "etc": "etc"
  }
}
person esp    schedule 20.06.2015