JSON Schema est un moyen de décrire à quoi doit ressembler la structure d'un document JSON, à l'aide d'un autre document JSON. Plutôt que de valider les données à la main avec des conditions dans le code, on peut décrire de façon déclarative les types attendus, les champs obligatoires et les contraintes de valeurs, puis vérifier les données automatiquement.
Mots-clés principaux de draft-07
type— le type de valeur attendu (object, string, number, array, etc.).required— la liste des champs d'un objet qui doivent obligatoirement être présents.properties— la description du schéma pour chaque champ de l'objet individuellement.enum— restreint une valeur à un ensemble précis d'options.pattern— valide une chaîne à l'aide d'une expression régulière, par exemple pour le format d'un SIRET.
Exemple : pattern pour un numéro SIRET français
Le SIRET identifie un établissement d'entreprise en France : exactement 14 chiffres, dont les 9 premiers forment le SIREN de l'entreprise elle-même. Un schéma utilisé pour tester le contrat d'une API de facturation B2B peut le décrire ainsi : "siret": {"type": "string", "pattern": "^\\d{14}$"}. Cela ne vérifie pas la clé de Luhn qui valide réellement le numéro — il faut une logique dédiée pour ça —, mais ça rejette immédiatement un SIRET tronqué à 9 chiffres (confondu avec un SIREN) ou contenant des espaces, une erreur fréquente quand on copie depuis un extrait Kbis.
En quoi ça diffère de la validation de syntaxe
La validation JSON classique vérifie seulement que le texte est syntaxiquement correct — accolades, guillemets, virgules bien placés. JSON Schema vérifie bien plus : un objet a-t-il un champ obligatoire email, la valeur de age est-elle un nombre et non une chaîne, status fait-il partie de la liste des valeurs autorisées.
À quoi ça sert
- Vérifier que la réponse d'une API tierce respecte le contrat documenté.
- Valider des fichiers de configuration avant le déploiement pour détecter une erreur en amont.
- Documenter la structure de données attendue dans un format directement vérifiable automatiquement.
additionalProperties : peut-on ajouter des champs en plus
Par défaut, JSON Schema autorise dans un objet tout champ supplémentaire au-delà de ceux décrits dans properties — required et properties ne définissent qu'un minimum, pas une liste exhaustive. Pour interdire les champs inconnus, il faut ajouter explicitement "additionalProperties": false — sans ce mot-clé, le schéma reste « ouvert ».