web-dev-qa-db-fra.com

Comment définir la taille minimale d'un tableau dans le schéma json

Je veux faire un schéma du fichier json.C'est pour une gamme de produits.

Le schéma json est similaire à celui ci-dessous:

{
"$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"]
}
}

Le tableau doit contenir au moins un élément. Comment définir le minimum du tableau?

Dois-je ajouter la définition minimale?

44
Stella

Je suppose que non, au moins en ce qui concerne le brouillon de travail, le minimum n'est appliqué qu'aux valeurs numériques, pas aux tableaux.

5.1. Mots-clés de validation pour les instances numériques (nombre et entier)
...
5.1.3. Minimum et exclusiveMinimum

Donc, vous devriez être bon avec min/maxItems pour les tableaux.

8
dmi3y

Pour définir le nombre minimum d'éléments dans un tableau, utilisez les "minItems".

Voir:

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

et

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"]
  }
61
damorin

Il semble que le projet v4 permette ce que vous recherchez. De 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"]
}

Notez que la propriété "tags" est définie comme un tableau, avec un nombre minimum d'éléments (1).

5
U007D