Ce que fait cet outil
Valide un document JSON contre un JSON Schema, en renvoyant soit « valide » soit une liste d'erreurs avec le chemin d'instance et le chemin de schema exacts pour chaque échec. Supporte Draft-07 et Draft 2020-12, auto-détecté depuis le champ $schema du schema, avec override manuel. Les vérifications de format (email, uri, date-time, uuid, etc.) sont activées.
Quand l'utiliser
- Concevoir un nouveau schema et l'essayer contre des payloads représentatifs.
- Diagnostiquer pourquoi ton API a rejeté une requête — le body matche-t-il vraiment la doc ?
- Vérifier qu'un fichier de config suit le schema de ton équipe avant de commit.
- Migrer entre Draft-07 et 2020-12 et vérifier que rien n'a cassé.
Comment ça marche
En dessous, ça utilise Ajv (le validateur JSON Schema derrière la plupart de l'outillage JS), épinglé en mode toutes-les-erreurs pour que tu voies chaque problème d'un coup au lieu de t'arrêter au premier. Les vérifications de format viennent de ajv-formats. Le schema et les données sont parsés en local ; rien n'est envoyé nulle part.
Sélection du draft : si le schema a "$schema": "https://json-schema.org/draft/2020-12/schema" on utilise le dialecte 2020-12 ; "http://json-schema.org/draft-07/schema#" sélectionne Draft-07. Sans $schema, on défaut à Draft-07 parce que c'est encore le plus courant dans la nature.
Notes
additionalProperties est autorisé par défaut — c'est correct ? Oui, par la spec. Si tu veux interdire les champs supplémentaires, mets "additionalProperties": false explicitement. C'est la cause la plus courante des surprises « je pensais que mon schema était strict ».
Quelle est la différence entre Draft-07 et 2020-12 ? 2020-12 retravaille les références ($dynamicRef), sépare items en items et prefixItems, et change comment additionalItems est géré. La plupart des schemas du quotidien marchent dans les deux, mais si tu utilises la validation de tuple, la syntaxe est incompatible.
Pourquoi ma regex pattern matche-t-elle des choses différentes dans des validateurs différents ? JSON Schema spécifie la syntaxe regex ECMA-262 (le flavor JavaScript). Les validateurs dans d'autres langages traduisent, parfois imparfaitement. Teste les motifs dans le Testeur de regex pour être sûr.
Outils liés
- Formateur JSON — assure-toi que les deux entrées sont bien formées d'abord
- JSON ↔ YAML — quand ton schema est en YAML
- Testeur de regex — débogue les keywords
pattern