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?
Cela signifie que l'objet doit avoir une valeur nonundefined
pour la propriété address
(si required
).
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é.
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).