Ограничить несколько элементов в Json - PullRequest
0 голосов
/ 13 июня 2018

Я создаю схему JSON, в которой поле является полем массива и может иметь два пользовательских типа.Теперь я хочу, чтобы это поле могло иметь один пользовательский тип с максимальным элементом 1 и другим от 0 до n

"field-1": {
    "type": "array",
    "system-generated": true,
    "anyOf": [{
            "items": {
                "$ref": "customItem1"
            }
        }, {
            "items": {
                "$ref": "customItem2"
            }
        }
    ]
}

Учитывая вышеизложенное, я хочу, чтобы у field-1 был customItem1 max один экземпляр, а у customItem2 было от 0 до n экземпляров.

1 Ответ

0 голосов
/ 14 июня 2018

К сожалению, нет способа обеспечить, чтобы массив содержал определенное число чего-либо.Самое близкое, что вы можете сделать, - это обеспечить, чтобы что-то существовало (от 1 до n) в массиве.

Если «customItem1» всегда является первым элементом, это можно сделать.

{
  "type": "array",
  "anyOf": [
    {
      "items": [
        { "$ref": "#/definitions/customItem1" }
      ],
      "additionalItems": { "$ref": "#/definitions/customItem2" },
    },
    {
      "items": { "$ref": "#/definitions/customItem2" }
    }
  ],
  "definitions": {
    "customItem1": { "type": "string" },
    "customItem2": { "type": "boolean" }
  }
}
...