Validation JSON Schema : Guide Complet pour Definir et Valider les Donnees JSON
Decouvrez comment JSON Schema fonctionne comme un contrat pour vos donnees -- des types de base aux champs obligatoires, en passant par la validation de format, les versions de draft et les cas d'utilisation reels pour les APIs et les fichiers de configuration.
Qu'est-ce que JSON Schema ?
JSON Schema est un langage declaratif qui vous permet de decrire la structure, le contenu et les contraintes d'un document JSON. Considerez-le comme un contrat entre un producteur et un consommateur de donnees. Le producteur dit "j'enverrai toujours un objet avec un string name et un entier age", et le consommateur peut verifier que chaque payload entrant respecte effectivement cette promesse.
C'est important car JSON lui-meme n'a pas de schema. N'importe quelle valeur JSON valide est parfaitement legale. Cette liberte est merveilleuse pour le prototypage rapide, mais devient un handicap lorsque deux systemes doivent s'accorder sur la forme des donnees.
Pourquoi JSON Schema est important pour les APIs
Les APIs REST communiquent via des payloads JSON, et chaque endpoint a une forme implicite. JSON Schema rend cette forme explicite et lisible par les machines. Avec un schema, vous pouvez :
- Valider les requetes sur le serveur avant qu'elles n'atteignent votre logique metier.
- Valider les reponses dans les tests d'integration pour detecter les changements cassants.
- Generer la documentation automatiquement -- des outils comme Swagger/OpenAPI utilisent JSON Schema comme epine dorsale.
- Generer du code -- des outils schema-vers-TypeScript, schema-vers-Go-struct eliminent les definitions de types manuelles.
Les bases de JSON Schema
Chaque JSON Schema est lui-meme un objet JSON. Le schema le plus simple possible est un objet vide {}, qui accepte n'importe quel JSON valide.
Types primitifs
Le mot-cle type est le fondement. JSON Schema reconnait six types primitifs :
| Type | Exemple JSON | Notes |
|---|---|---|
| string | "bonjour" | Valeurs texte. Contraignable avec minLength, maxLength, pattern. |
| number | 3.14 | Toute valeur numerique. Utilisez minimum, maximum, multipleOf. |
| integer | 42 | Nombres entiers uniquement. Memes contraintes que number. |
| boolean | true | Uniquement true ou false. |
| object | {"cle": "valeur"} | Paires cle-valeur. Defini avec properties, required, additionalProperties. |
| array | [1, 2, 3] | Listes ordonnees. Utilisez items, minItems, maxItems, uniqueItems. |
| null | null | L'absence de valeur. Souvent combine avec un autre type. |
Proprietes et champs obligatoires
Le mot-cle properties definit quelles cles sont attendues. Le mot-cle required liste celles qui doivent etre presentes.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name", "email"]
}
Controler les proprietes additionnelles
"additionalProperties": false rend le schema strict -- seules les cles listees sont autorisees.
additionalProperties: false avec des mots-cles de composition comme allOf, les proprietes definies dans d'autres sous-schemas peuvent etre rejetees.
Validation de format
Le mot-cle format fournit une validation semantique au-dela des types de base.
Formats integres
| Format | Valeur d'exemple | Cas d'utilisation |
|---|---|---|
| date-time | 2026-03-27T10:30:00Z | Horodatages ISO 8601 pour evenements et journaux |
| date | 2026-03-27 | Dates calendaires sans heure |
[email protected] | Formulaires de contact, inscription | |
| uri | https://example.com/api | URLs webhook, liens de ressources |
| uuid | 550e8400-e29b-41d4-a716-446655440000 | Identifiants uniques, cles primaires |
| ipv4 | 192.168.1.1 | Configuration reseau, adresses serveur |
Format comme annotation vs. assertion
Par defaut, format est une annotation, pas une assertion. Dans Draft 2020-12, vous devez activer explicitement l'assertion de format.
format avec un regex pattern si la validation stricte est critique.
Versions de draft : Draft-07 vs 2020-12
Les deux versions que vous rencontrerez le plus souvent sont Draft-07 et Draft 2020-12.
Differences cles
| Fonctionnalite | Draft-07 | Draft 2020-12 |
|---|---|---|
| prefixItems | Non disponible | Remplace la validation de tuples |
| $dynamicRef | Non disponible | Nouveau -- references de schema dynamiques |
| unevaluatedProperties | Non disponible | Resout le probleme additionalProperties + allOf |
| Support bibliotheques | Excellent | Bon et croissant |
Quelle version choisir ?
Choisissez Draft-07 si votre ecosysteme l'utilise deja ou si vous avez besoin d'une compatibilite maximale.
Choisissez Draft 2020-12 si vous demarrez un nouveau projet sans contraintes heritees.
Conclusion
Pour la plupart des nouveaux projets en 2026, Draft 2020-12 est le meilleur choix par defaut.
Comment utiliser notre generateur JSON Schema
Notre Generateur JSON Schema gratuit prend n'importe quel payload JSON et produit automatiquement un schema valide. Tout fonctionne dans votre navigateur.
Guide etape par etape
- Ouvrez l'outil Generateur JSON Schema.
- Collez votre JSON dans la zone de saisie.
- Cliquez sur Generer et l'outil analysera chaque champ, inferera les types et detectera les formats.
- Examinez la sortie -- le schema genere apparait dans le panneau de sortie.
- Basculez vers l'onglet Valider pour tester votre schema contre de nouveaux payloads.
- Copiez le schema en un clic et integrez-le dans votre projet.
Note de confidentialite
Notre Generateur JSON Schema fonctionne a 100% dans votre navigateur. Vos donnees JSON, schemas generes et resultats de validation ne quittent jamais votre appareil.
Generez votre JSON Schema instantanement
Collez n'importe quel payload JSON et obtenez un schema pret a l'emploi avec inference de types, champs obligatoires et detection de format -- 100% dans votre navigateur.