J'utilise json-schema et je souhaite autoriser uniquement les propriétés déclarées dans ce fichier à passer la validation. Par exemple, si un utilisateur transmet une propriété "nom" dans son objet json, ce schéma échouera car "nom" n'est pas répertorié ici en tant que propriété.
Existe-t-il une fonction similaire à "requise" qui ne permettra aux propriétés répertoriées de passer?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Accounting Resource - Add Item",
"type": "object",
"properties": {
"itemNumber": {
"type":"string",
"minimum": 3
},
"title": {
"type":"string",
"minimum": 5
},
"description": {
"type":"string",
"minimum": 5
}
},
"required": [
"itemNumber",
"title",
"description"
]
}
Je crois que ce que vous devez faire pour y parvenir est défini sur additionalProperties
sur false. Voir la spécification ici
FYI - il semble que la version 5 de la norme décrira un mode de validation "bannir les propriétés inconnues" .
Ainsi, au lieu de faire de cette exigence une partie du format (qui, comme le dit Chris Pitman dans les commentaires, nuit à l'extensibilité future), vous pouvez simplement demander à votre validateur de marquer les propriétés inconnues comme des erreurs. Donc, c'est comme un mode de validation super strict qui est utile pour les développeurs.
Certains validateurs le supportent déjà (par exemple tv4 ):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
Avec cet outil, checkRecursive
doit être utilisé si vos données peuvent avoir des références circulaires, et banUnknownProperties
fera exactement ce que vous voulez, sans avoir à utiliser "additionalProperties":false
.