Как определить минимальный размер массива в схеме json

Я хочу сделать схему json файла для массива товаров.

Схема json похожа на приведенную ниже:

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product set",
"type": "array",
"items": {
    "title": "Product",
    "type": "object",
    "properties": {
        "id": {
            "description": "The unique identifier for a product",
            "type": "number"
        },
        "name": {
            "type": "string"
        },
        "price": {
            "type": "number",
            "minimum": 0,
            "exclusiveMinimum": true
        },
        "tags": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
        },
        "dimensions": {
            "type": "object",
            "properties": {
                "length": {"type": "number"},
                "width": {"type": "number"},
                "height": {"type": "number"}
            },
            "required": ["length", "width", "height"]
        },
        "warehouseLocation": {
            "description": "Coordinates of the warehouse with the product",
            "$ref": "http://json-schema.org/geo"
        }
    },
    "required": ["id", "name", "price"]
}
}

В массиве должен быть хотя бы один элемент. Как я могу определить минимум массива?

Мне нужно добавить определение минимума?


person Stella    schedule 16.05.2013    source источник


Ответы (3)


Я полагаю, что нет, по крайней мере, глядя на рабочий проект, minimum применяется только для числовых значений, а не для массивов.

5.1. Ключевые слова проверки для числовых экземпляров (число и целое число)
...
5.1.3. минимум и исключительный минимум

Таким образом, вы должны хорошо разбираться в min / maxItems для массивов.

person dmi3y    schedule 17.05.2013

Чтобы установить минимальное количество элементов в массиве, используйте "minItems".

Видеть:

http://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.3

а также

http://jsonary.com/documentation/json-schema/?section=keywords/Array%20validation

   {
   "$schema": "http://json-schema.org/draft-04/schema#",
   "title": "Product",
   "description": "A product from Acme's catalog",
   "type": "object",
   "properties": {
      ...
      "tags": {
          "type": "array",
          "items": {
              "type": "string"
          },
          "minItems": 1,
          "maxItems": 4,
          "uniqueItems": true
      }
  },
  "required": ["id", "name", "price"]
  }
person damorin    schedule 25.04.2014
comment
пример более полезен, чем ссылки (которые со временем могут испортиться) - person Kate Gregory; 25.04.2014
comment
Он работает так, как ожидалось: когда "maxItems": 0, проверка не выполняется, если длина массива "items" не равна нулю. Большой! - person klapshin; 31.01.2019

Похоже, черновик v4 разрешает то, что вы ищете. Из http://json-schema.org/example1.html:

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
    ...
    "tags": {
        "type": "array",
        "items": {
            "type": "string"
        },
        "minItems": 1,
        "uniqueItems": true
    }
},
"required": ["id", "name", "price"]
}

Обратите внимание, что свойство «tags» определено как массив с минимальным количеством элементов (1).

person U007D    schedule 30.11.2013