Outils
Guides

Validateur JSON Schema

JSON

Validez du JSON par rapport a un JSON Schema (Draft-07 / 2019-09 / 2020-12) avec des violations par champ, ou deduisez un schema a partir d'un exemple.

100 % côté client Sans backend

Les URL distantes ne sont pas récupérées ; collez votre JSON directement.

Schema
Donnees
Saisissez un schema et des donnees (validation) ou un exemple (inference).
Sur cette page

Qu’est-ce qu’un outil JSON Schema ?#

Une valeur JSON seule vous dit ce que les données sont — une chaîne ici, un nombre là. Elle ne vous dit pas ce que les données devraient être : si age doit être un entier non négatif, si email est requis, si tags a le droit d’être vide. JSON Schema est le vocabulaire pour exprimer ces choses. Vous écrivez un schéma — un petit document JSON qui décrit une forme — et un validateur vérifie si une donnée cadrait avec cette forme, champ par champ.

Cette page effectue deux tâches avec un même moteur de schémas. Valider prend un schéma et un document de données et vous dit exactement quels champs enfreignent quelles règles, chacun rattaché à son chemin dans le document. Déduire fait l’inverse : donnez-lui un exemple de valeur JSON et il écrit pour vous un schéma de style Draft-07, en parcourant la structure et en enregistrant le type de chaque champ. Les deux se combinent naturellement — déduisez un schéma d’un exemple représentatif, puis validez chaque document futur contre lui.

La validation s’exécute sur le même moteur Ajv qu’utilise le code de production, avec trois drafts sélectionnables (Draft-07, 2019-09, 2020-12) et le garde-fou de mode strict relâché, donc un schéma légèrement non strict est toléré plutôt que refuré catégoriquement.

Mode d’emploi#

  1. Choisissez un mode avec le commutateur de la barre d’outils :
    • Valider (par défaut) : collez votre schéma à gauche, vos données à droite.
    • Déduire : collez un exemple de valeur JSON à gauche, lisez le schéma généré à droite.
  2. En mode Valider, choisissez le Draft contre lequel le schéma est écrit — Draft-07 couvre la grande majorité des schémas en circulation ; ne choisissez 2019-09 ou 2020-12 que si votre schéma utilise des fonctionnalités introduites par ces drafts.
  3. Choisissez une Indentation pour la sortie — 2 ou 4 espaces. En mode Déduire, cela contrôle la mise en forme du schéma généré.
  4. Le panneau de droite affiche soit le document de données (Valider), soit le schéma déduit (Déduire). Les étiquettes des panneaux se permutent pour s’adapter au mode.
  5. En mode Valider, le panneau Violations sous les panneaux liste chaque infraction comme chemin — raison. La racine du document est affichée comme (racine) ; un champ imbriqué apparaît sous forme de son JSON Pointer, comme /age.
  6. Cliquez sur Copier dans le panneau de droite pour récupérer le schéma déduit ou les données, ou sur Exemple / Effacer pour charger ou réinitialiser.

Les résultats se calculent dès que les deux entrées s’analysent. Une erreur de syntaxe de schéma ou de données est signalée avec sa ligne et colonne exactes, étiquetée comme un problème de schéma, de données ou de compilation, afin que vous sachiez où chercher.

Principales fonctionnalités#

  • Deux modes, un moteur. Validez des documents, ou générez un schéma à partir d’un exemple, avec le même validateur éprouvé sous le capot.
  • Trois drafts. Draft-07, 2019-09 et 2020-12 ne chargent chacun que leur propre validateur compilé, donc vous validez toujours contre le draft que vous ciblez réellement.
  • Toutes les erreurs, pas seulement la première. Chaque infraction est collectée, donc un document avec cinq problèmes affiche cinq problèmes au lieu de vous imposer cinq allers-retours.
  • Violations rattachées à un chemin. Chaque infraction pointe vers sa localisation dans le document — (racine) pour les problèmes globaux, ou un pointeur précis comme /user/address/zip.
  • Mode strict relâché. Un schéma avec un mot-clé inconnu ou sans type de premier niveau est toléré et exécuté, pas rejeté à la compilation — le bon comportement pour un outil dont le métier est de vérifier, pas de faire la morale.
  • Local uniquement. Schémas et données sont traités dans votre navigateur. Rien n’est téléversé.

Exemple détaillé#

Un objet user doit avoir un name, et age doit être un entier non négatif. Collez ce schéma à gauche en mode Valider :

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}

Testez maintenant un document qui enfreint les deux règles — name manquant, et un age négatif :

{
  "age": -3
}

Le panneau Violations signale deux infractions, chacune rattachée à l’endroit où elle s’est produite :

(root) — must have required property 'name'
/age   — must be >= 0

Le chemin (root) vous indique que la propriété requise manquante est un problème de niveau document ; /age pointe directement vers le champ fautif. Corrigez les données en {"name":"ada","age":36} et le statut passe à valide avec une liste de violations vide. Le texte de la raison est la formulation native d’Ajv pour chaque mot-clé, conservée telle quelle afin de correspondre à ce que vos journaux de production diront.

FAQ#

Draft-07, 2019-09 ou 2020-12 — lequel choisir ?#

Draft-07 est le défaut pragmatique : l’écrasante majorité des schémas dans les tutoriels, bibliothèques et spécifications OpenAPI le ciblent, et tout ce dont vous êtes susceptible d’avoir besoin (type, properties, required, minimum, format, $ref) y fonctionne. Passez à 2019-09 ou 2020-12 uniquement quand votre schéma utilise explicitement des fonctionnalités ajoutées par ces drafts — comme unevaluatedProperties ou le comportement révisé de $ref. Choisir le mauvais draft fonctionne en général encore, mais le choix sûr est le draft que l’auteur du schéma avait en tête.

Pourquoi les messages de violation sont-ils en anglais ?#

C’est le texte de raison d’Ajv pour chaque mot-clé (must have required property, must be >= 0, etc.), retransmis inchangé. L’idée est la cohérence : ce sont les chaînes exactes que votre validation côté serveur journalisera, donc les reproduire ici rend une divergence trivialement recherchable dans les logs de production.

Que signifie « mode strict relâché » ?#

Le mode strict d’Ajv rejette les schémas qu’il juge négligés — un mot-clé inconnu, un $ref qu’il ne peut résoudre, un type manquant. C’est utile dans un pipeline de build, mais faux pour un outil validateur, dont le métier est de vérifier des données contre le schéma qu’on lui confie. Cette page désactive le mode strict, donc un schéma non strict se compile et s’exécute au lieu de lever une erreur.

Puis-je déduire un schéma puis valider contre lui ?#

Oui — c’est l’aller-retour prévu. Collez un exemple représentatif en mode Déduire, copiez le schéma généré, basculez en Valider, et collez le schéma à gauche. Le schéma déduit revalide proprement l’exemple d’origine, et à partir de là vous pouvez vérifier chaque nouveau document contre lui.