Guide 27 Mar 2026 12 min de lecture

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.

JSON Schema Validation Guide

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.
Point cle : JSON Schema n'est pas qu'un outil de validation. C'est une source unique de verite qui alimente documentation, generation de code, tests et verifications a l'execution -- le tout depuis un seul fichier.

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.
number3.14Toute valeur numerique. Utilisez minimum, maximum, multipleOf.
integer42Nombres entiers uniquement. Memes contraintes que number.
booleantrueUniquement 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.
nullnullL'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.

Attention : Si vous utilisez 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-time2026-03-27T10:30:00ZHorodatages ISO 8601 pour evenements et journaux
date2026-03-27Dates calendaires sans heure
email[email protected]Formulaires de contact, inscription
urihttps://example.com/apiURLs webhook, liens de ressources
uuid550e8400-e29b-41d4-a716-446655440000Identifiants uniques, cles primaires
ipv4192.168.1.1Configuration 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.

Conseil pratique : Combinez toujours 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
prefixItemsNon disponibleRemplace la validation de tuples
$dynamicRefNon disponibleNouveau -- references de schema dynamiques
unevaluatedPropertiesNon disponibleResout le probleme additionalProperties + allOf
Support bibliothequesExcellentBon 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

  1. Ouvrez l'outil Generateur JSON Schema.
  2. Collez votre JSON dans la zone de saisie.
  3. Cliquez sur Generer et l'outil analysera chaque champ, inferera les types et detectera les formats.
  4. Examinez la sortie -- le schema genere apparait dans le panneau de sortie.
  5. Basculez vers l'onglet Valider pour tester votre schema contre de nouveaux payloads.
  6. 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.