Validateur de Schéma JSON
Validez du JSON contre un JSON Schema (Draft 2020-12) avec des erreurs incluant le chemin complet de l'instance
JSON
Schéma
Validateur de Schéma JSON
Validez du JSON contre un JSON Schema (Draft 2020-12) avec des erreurs incluant le chemin complet de l'instance
Fonctionnalités
- Valide les instances JSON contre tout JSON Schema via Ajv (l'implémentation de référence de fait), avec support complet des mots-clés Draft-07, 2019-09 et 2020-12
- Le rapport d'erreurs liste chaque échec sous forme `chemin : message` — les chemins d'instance suivent la notation JSON Pointer RFC 6901, donc vous descendez directement au nœud fautif
- Toutes les erreurs sont rapportées en un seul passage (allErrors: true) au lieu de s'arrêter à la première — voyez tous les problèmes d'un coup
- Compilation strict-mode désactivée pour que les schémas non standard ou étendus compilent toujours ; allowUnionTypes activé pour les schémas utilisant des unions
- Le bouton Charger un exemple remplit les deux volets avec un petit exemple (objet avec id et name requis plus tableau tags) pour voir le validateur fonctionner sans rien taper
- Le bouton Copier les erreurs émet la liste complète sous forme de bloc `chemin : message` séparé par des sauts de ligne — à coller dans un ticket ou une fixture de test
- Purement côté client : Ajv tourne dans votre navigateur, aucun JSON ni schéma n'est envoyé à un serveur, et l'outil fonctionne hors-ligne une fois la page chargée
- Le rapport d'erreur d'analyse séparé distingue le JSON mal formé des violations de schéma — vous savez toujours si corriger la syntaxe ou le contrat
Mode d'emploi
- Collez l'instance JSON à valider dans la zone de texte de gauche.
- Collez votre JSON Schema dans la zone de droite — utilisez Draft 2020-12, 2019-09 ou Draft-07 ; Ajv choisit automatiquement selon $schema.
- Cliquez Valider. Si les deux entrées sont bien parsées, Ajv compile le schéma et lance la validation.
- Lisez le résultat : la bannière verte Valide signifie que l'instance correspond ; sinon chaque échec montre le chemin JSON Pointer et le message Ajv lisible.
- Cliquez Copier les erreurs pour obtenir le rapport complet en lignes `chemin : message` à partager ou à stocker dans un fichier de fixture.
- Utilisez Charger un exemple pour remplir les deux volets avec un exemple fonctionnel si vous voulez vérifier le comportement avant de coller vos données.
Conseils et bonnes pratiques
- Incluez toujours un champ $schema dans votre schéma pour qu'Ajv choisisse la bonne sémantique de draft.
- Préférez additionalProperties: false en développement pour attraper les fautes de frappe dans les noms de champs tôt.
- Utilisez $defs (ou definitions en Draft-07) pour partager des sous-schémas communs — les refs rendent les schémas DRY et revusables.
- Quand la validation passe en local mais échoue en CI, vérifiez que la même version d'Ajv et les mêmes drafts sont utilisés dans les deux environnements.
- Sauvegardez la sortie de Copier les erreurs dans vos fixtures de tests pour que les régressions apparaissent comme des diffs de violation de schéma.
FAQ
Quels drafts JSON Schema sont supportés ?
Draft-07, Draft 2019-09 et Draft 2020-12. Ajv sélectionne automatiquement le méta-schéma d'après le champ $schema ; s'il est absent, il revient à la sémantique Draft-07. La spec 2020-12 plus récente remplace definitions par $defs et items par prefixItems/items — anciens et nouveaux mots-clés sont acceptés.
Que signifie le chemin dans une erreur ?
Ajv rapporte instancePath en notation JSON Pointer RFC 6901 : '/users/0/email' signifie « la propriété email du premier utilisateur ». La racine est la chaîne vide (rendue $ dans l'UI). Cela facilite la navigation jusqu'au champ fautif dans des données imbriquées.
Pourquoi mon schéma ne compile pas ?
Causes communes : JSON malformé (virgules en trop, apostrophes, clés non quotées) ; un $ref pointant vers une définition inexistante ; ou un mot-clé en strict mode qu'Ajv ne reconnaît pas. Le panneau d'erreur d'analyse du schéma montre l'erreur exacte de compilation Ajv ; le strict mode est déjà désactivé ici, donc la plupart des schémas non standard compilent.
Pourquoi ai-je une erreur « unknown keyword » ou « unknown format » ?
Les mots-clés JSON Schema standard (type, required, properties, etc.) sont natifs. Les noms de format personnalisés comme « date-time », « uri », « email » ne sont pas validés par défaut — Ajv les traite comme des annotations sauf si vous chargez ajv-formats. Pour vérifier les formats, exécutez la validation dans une étape de build avec ajv-formats installé.
Le validateur s'arrête-t-il à la première erreur ?
Non. Ajv est configuré avec allErrors: true, donc chaque échec est rapporté. Pour des erreurs profondément imbriquées cela peut être verbeux ; si vous ne voulez que la première, passez le JSON+schéma à votre propre appel ajv() avec allErrors: false dans votre build.
Cela fonctionne-t-il pour de très gros documents JSON ?
Oui, mais le bon pattern en code est compile-once-validate-many. Cet outil recompile à chaque clic Valider, ce qui convient pour des vérifications en dev mais pas pour des chemins chauds en prod. Le build Ajv utilisé ici est le bundle ESM standard ; comptez des temps de compilation en millisecondes pour des schémas typiques.
Mon JSON et mon schéma sont-ils envoyés quelque part ?
Non. Les deux zones restent dans votre navigateur ; Ajv tourne localement ; nous ne loggons, stockons ni télémétrons le contenu. Vérifiez dans l'onglet Réseau des DevTools — il n'y a pas d'appel réseau au clic Valider.
Quelle est la différence avec l'onglet schéma de JSON Formatter ?
L'onglet schéma de JSON Formatter utilise le même SchemaService basé sur Ajv pour des vérifications ponctuelles à côté du formatage, JSONPath et vue arborescente. Ce validateur autonome offre deux gros panneaux de collage, un chargeur d'exemple, l'export Copier les erreurs et une URL dédiée à mettre en favori ou partager — mieux quand la validation est votre seule tâche.