search

Found

info Aperçu

Valide une instance JSON par rapport à un Schema et liste chaque erreur avec chemin JSON Pointer, mot-clé et message, en draft-07, 2019-09 ou 2020-12.

📘 Mode d'emploi

  1. Choisissez un draft (draft-07, 2019-09 ou 2020-12)
  2. Collez votre JSON Schema dans le champ supérieur
  3. Collez l'instance JSON dans le champ inférieur
  4. Consultez la carte de verdict et le tableau d'erreurs

Validateur JSON Schema

En attente
Collez un Schema et une instance pour lancer la validation.

※ Couvre les mots-clés principaux de JSON Schema (type, required, enum, const, properties, items, allOf, anyOf, oneOf, not, etc.). Ne résout pas $ref / $defs, dependentSchemas, contains, if/then/else ni unevaluatedProperties/Items.

Article

Validateur JSON Schema | Basculez entre draft-07, 2019-09 et 2020-12 dans le navigateur

Outil léger pour valider une réponse d'API, un fragment extrait d'OpenAPI ou un fichier de configuration contre un JSON Schema. Permutez d'un clic entre les trois drafts majeurs et listez chaque erreur avec son chemin JSON Pointer, son mot-clé et son message.

💡 À propos de cet outil

JSON Schema est le langage déclaratif de référence pour décrire la structure attendue d'un JSON : contrats REST, payloads de webhooks, fichiers de configuration, autocomplétion settings.json de VS Code. Le point pénible au quotidien n'est que rarement de lire le schema — c'est d'identifier précisément le mot-clé sur lequel une instance donnée échoue. Installer ajv-cli via npm i -g est démesuré pour une simple revue de PR, et les extensions d'IDE sont souvent figées sur une seule version de draft. Cet outil occupe exactement ce créneau.

Sélectionnez draft-07, 2019-09 ou 2020-12 selon la version utilisée par votre chaîne d'outillage. Le validateur parse les deux entrées via JSON.parse natif puis exécute une implémentation subset de la spec. Les erreurs s'affichent dans une table à trois colonnes — instancePath (JSON Pointer), keyword et message — pour suivre une défaillance à travers des properties profondément imbriqués sans se perdre. Activez le mode "Première seulement" pour une sortie anticipée dès la première violation, particulièrement utile pour déboguer un schéma volumineux étape par étape.

Les mots-clés couverts sont ceux du noyau : type, required, enum, const, minLength, maxLength, pattern, minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, minItems, maxItems, uniqueItems, prefixItems, items, minProperties, maxProperties, additionalProperties, patternProperties, format (subset), allOf, anyOf, oneOf, not et les schemas booléens false. Ce qui n'est pas résolu : $ref / $defs, dependentSchemas, contains, if/then/else et unevaluatedProperties / unevaluatedItems. Si votre schéma s'appuie sur ces mots-clés, complétez avec ajv ou jsonschema dans votre CI — cet outil joue le rôle de contrôle préalable, pas de validateur de production.

🧐 Questions fréquentes

Q. Que change le basculement de draft ? En 2020-12, items ne prend plus qu'un seul schéma ; la validation de type tuple a migré vers prefixItems. Ce validateur implémente prefixItems nativement et accepte aussi items sous forme de tableau pour 2019-09 et draft-07. exclusiveMinimum et exclusiveMaximum sont traités comme numériques dans les trois drafts.

Q. Quelle est la précision du contrôle format ? email, uri, url, uuid, date, time, date-time, ipv4, ipv6 et hostname sont vérifiés via des expressions régulières internes — un subset rapide, pas une conformité RFC complète. Pour une vérification stricte des bits de variant UUID ou un date-time tenant compte des secondes intercalaires, ajoutez ajv-formats dans votre pipeline CI.

Q. Les schémas avec $ref fonctionnent-ils ? Le parsing aboutit, mais les cibles de $ref ne sont pas déréférencées — les contraintes derrière la référence ne s'appliquent simplement pas, donc l'instance peut être marquée valide alors que le schéma référencé l'aurait rejetée. Utilisez ajv ou une implémentation complète lorsque la résolution de $ref est critique.

Q. La liste d'erreurs est trop dense — comment prioriser ? Passez "Erreurs" sur "Première seulement" pour que le validateur sorte à la première violation rencontrée. Combiné à des schémas profonds, c'est le moyen le plus rapide de remonter l'arbre des défaillances sans que 200 erreurs en cascade masquent la cause racine.

Q. Existe-t-il une limite de taille en entrée ? Pas de plafond explicite, mais JSON.parse s'exécute dans le thread principal et consomme de la mémoire réelle. Les charges de plusieurs mégaoctets relèvent du CI avec ajv ; cet outil est dimensionné pour des corps de requête uniques, des fixtures et des échantillons de webhook.

Q. Puis-je réutiliser la sortie des erreurs ? Le bouton Copier sous le tableau place dans le presse-papiers un tableau JSON d'entrées {instancePath, schemaPath, keyword, message}. Collez directement dans un Issue GitHub, un commentaire de PR ou un rapport de tests.

📚 Le saviez-vous

L'historique de versions de JSON Schema sort de l'ordinaire : draft-04 (2013) → draft-06 (début 2017) → draft-07 (fin 2017) → draft-2019-09 → draft-2020-12. La numérotation est passée de séquentielle à étiquettes année-mois autour de 2019, lorsque le groupe de travail IETF a clarifié que "draft" désigne ici un numéro de révision et non un statut "inachevé". Malgré cette connotation, draft-07 reste le plus déployé car figé dans OpenAPI 3.0 (la spec 3.1 ayant finalement adopté 2020-12).

Côté écosystème francophone, JSON Schema est désormais le pivot des frameworks comme Fastify (intégré par défaut), NestJS et @sinclair/typebox, où un seul schéma sert simultanément à la validation HTTP et à la génération de types TypeScript. Les mots-clés annotatifs (description, examples, default, deprecated) n'influencent pas la validation mais alimentent Swagger UI, Stoplight et Redoc — il vaut la peine de les renseigner dès la rédaction du contrat d'API, pas en post-prod.