web-dev-qa-db-fra.com

Quelle est la différence entre "requis" et "facultatif" dans le schéma JSON

Parfois, j'ai remarqué les schémas JSON suivants:

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "required": true
            }
     }

}

contre

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "optional": false
            }
     }

}

Quelle est donc la différence entre required et optional dans l'exemple ci-dessus?

41
Cory

Cela signifie que l'objet doit avoir une valeur nonundefined pour la propriété address (si required).

5
Explosion Pills

IETF draft v4 du schéma JSON définit uniquement required et n'inclut pas optional.

Pour citer section sur required du brouillon v4:

Valeurs valides: La valeur de ce mot-clé DOIT être un tableau. Ce tableau DOIT avoir au moins un élément. Les éléments de ce tableau DOIVENT être des chaînes et DOIVENT être uniques.

Conditions d'une validation réussie: Une instance d'objet est valide par rapport à ce mot-clé si son jeu de propriétés contient tous les éléments de la valeur de tableau de ce mot-clé.

En effet, l'utilisation de required rend facultatives toutes les propriétés dont le nom n'est pas inclus dans le tableau de chaînes donné.

34
Peace Makes Plenty

En fait, ce sont des expressions équivalentes, mais utilisant différentes versions de la norme.

optional est de la v2, required est de la v3. Vous devez vous assurer que vous utilisez le bon pour votre outil (bien que vous devriez idéalement passer à la v4 si vous le pouvez).

21
cloudfeet