JSON Schema : valider des données en ligne (Draft 2020-12)

JSON Schema : valider des données en ligne (Draft 2020-12)

Testez payloads API et fichiers config contre un JSON Schema — erreurs par chemin JSON Pointer.

12.08.2026
10 min de lecture
Partager cet article:
json-schema
validation
API
openapi
Tutoriel

Pourquoi valider des données JSON contre un schéma ?

Un JSON valide n'est pas forcément valide pour votre API. Un payload peut parser parfaitement tout en manquant un champ requis, envoyant un mauvais type ou violant une contrainte format — et ces bugs n'apparaissent souvent qu'en tests d'intégration ou en production. JSON Schema répond à une question différente de la vérification syntaxique : cette instance respecte-t-elle le contrat ? Le validateur JSON Schema en ligne de FastMinify exécute la validation Draft-07 et 2020-12 dans deux éditeurs Monaco (schéma + instance), entièrement dans votre navigateur. Associez-le au validateur JSON si la syntaxe est douteuse, et à validate-openapi quand le contrat vit dans OpenAPI. Explorez le hub outils API pour la conversion de schémas et le lint OpenAPI.

Schéma vs syntaxe : détecter champs requis manquants et types incorrects après parse JSON
Draft-07 et 2020-12 via Ajv — erreurs instancePath / keyword par violation
Double éditeur avec debounce live (~300 ms) — sans installation ni compte
Mode Strict optionnel pour la revue de schémas (Ajv strict: true à la compilation)
100 % local — schéma et payloads ne quittent jamais le navigateur

Limites honnêtes et schémas maintenables

Ce que le validateur navigateur ne fait pas

Un résultat vert signifie que l'instance a matché le schéma collé — pas que toute la plateforme API est conforme.

Pas de fetch réseau — $ref externes et https:// jamais résolus
Pas de bundle multi-fichiers — collez un schéma JSON autonome par run
Pas de lint opérations OpenAPI — utilisez lint-openapi pour operationId et tags
Pas de sonde d'endpoints live — l'instance doit être collée explicitement
Schémas Draft-04/06/2019-09 refusés — migrer ou convertir les drafts d'abord
Conseils de design de schéma

Les schémas qui passent proprement dans le navigateur survivent mieux à la CI et la génération SDK.

Toujours définir $schema dans les fichiers partagés — éviter les assumptions 2020-12 implicites
Préférer additionalProperties: false seulement pour objets fermés délibérés
Utiliser examples OpenAPI et les coller comme instances en revue
Aligner les enums avec le code — documenter les valeurs dépréciées dans description
Versionner les breaking changes — les consumers valident contre le tag schéma ciblé
Quand escalader vers la CI

Les checks navigateur économisent des minutes pipeline ; la politique org reste en CI.

Ajv ou jsonschema dans GitHub Actions / GitLab CI sur chaque PR
Détecteurs de breaking change entre versions de schéma
Pact ou tests de contrat sur environnements live
Registries schéma (Apicurio, Buf) pour gouvernance multi-équipes
Combiner avec notre guide CI/CD

Syntaxe JSON vs validation JSON Schema

Deux validateurs, deux questions

Ne changez pas d'outil en milieu de debug — chacun cible un mode de défaillance distinct.

Validateur JSON (json-validator) : syntaxe seule — virgules traînantes, guillemets simples, collage tronqué
Validateur JSON Schema (json-schema-validator) : contrat sémantique — types, required, enums, formats
Syntaxe verte + schéma rouge = violation de contrat, pas erreur de parse
Réparez le JSON avec json-repair ou les liens siblings du validateur
La validation OpenAPI document est une troisième intention — utilisez validate-openapi pour l'enveloppe de spec
Drafts supportés (et ce qui est refusé)

FastMinify détecte le draft via $schema si présent ; sans $schema, défaut 2020-12.

Draft 2020-12https://json-schema.org/draft/2020-12/schema
Draft-07http://json-schema.org/draft-07/schema#
Draft-04, Draft-06 et 2019-09 → erreur unsupported-draft explicite — pas de conversion silencieuse
Déclarez le draft explicitement dans les schémas partagés pour éviter les dérives d'équipe
OpenAPI 3.1 s'aligne sur 2020-12 ; OpenAPI 3.0 utilise souvent Draft-07 dans components.schemas
instancePath et erreurs keyword

En cas d'échec, Ajv indique où l'instance a violé le schéma — indispensable sur les gros payloads API.

instancePath pointe vers la valeur en échec (style JSON Pointer)
Le keyword indique la règle en échec (required, type, format, …)
Les violations multiples s'affichent séparément — corrigez par priorité métier
Instance vide avec schéma required → chemin / ou propriétés manquantes
Utilisez le visualiseur JSON sur les payloads profonds

Valider du JSON contre un schéma : pas à pas

Utiliser le validateur JSON Schema

Le validateur JSON Schema propose deux éditeurs : Schéma et Instance. Collez du JSON dans chaque champ — pas de YAML dans l'éditeur schéma (JSON uniquement). Max 512 KiB par champ.

Validation live après debounce (~300 ms) quand les deux côtés parsent
Panneau résultats : valide / invalide, nombre de violations, draft détecté
Par erreur : instancePath, keyword, message
Actions copier et expand (⌘⇧E) sur chaque panneau
Toggle Strict — désactivé par défaut ; activer pour lint schéma style CI
Mode Strict : quand l'activer

Le mode Strict active Ajv strict: true à la compilation du schéma — keywords inconnus et schémas non-strict échouent avant validation d'instance.

Désactivé (défaut) : debug pragmatique de schémas réels avec clés supplémentaires
Activé : revue de schéma avant publication registry ou <code>components.schemas</code> OpenAPI
Erreurs de compilation Strict dans le panneau résultats — corriger le schéma puis retester
Combiner Strict avec <a href="/fr/format-openapi" class="text-primary hover:underline">format-openapi</a> pour schémas embarqués
Ne remplace pas la gouvernance Spectral ou vocabulaires custom org
Scénario — réponse API en échec en staging

Le client mobile plante sur une nouvelle forme de champ — la réponse est du JSON valide mais casse le schéma publié.

1

Étape 1 : confirmer la syntaxe JSON

Collez la réponse dans json-validator. Si la syntaxe échoue, réparez avant validation schéma.

2

Étape 2 : coller schéma et instance

Ouvrez json-schema-validator. Collez le schéma canonique (export OpenAPI ou registry) et la réponse staging.

3

Étape 3 : lire les erreurs instancePath

Corrigez l'API ou mettez à jour le schéma avec plan de dépréciation. Re-validez après déploiement. Option : diff staging vs production.

Scénario — fichier config avant kubectl apply

L'équipe partage une config JSON validée en CI — vous voulez un check local rapide sans cloner le pipeline.

1

Étape 1 : charger le schéma du repo

Copiez le JSON schéma (autonome — les $ref externes ne sont pas résolus dans le navigateur).

2

Étape 2 : valider votre édition

Collez la config modifiée comme instance. Activez Strict si le schéma est rédigé pour revue stricte.

3

Étape 3 : chaîner avec YAML si besoin

Les configs sont souvent en YAML — convertissez via yaml-to-json, validez syntaxe, puis schéma sur l'instance JSON.

OpenAPI, components.schemas et conversion

Où vivent les schémas dans les contrats API

Les équipes REST publient souvent dans OpenAPI components.schemas tandis que les registries stockent des fichiers standalone — le validateur accepte les deux une fois extraits en JSON. Workflow : validate-openapi (enveloppe spec) → extraire schéma → json-schema-validator (payload vs schéma). Voir notre guide validation OpenAPI et le guide lint & format pour la face spec du contrat.

Convertir entre OpenAPI et JSON Schema

Quand la source est le fichier OpenAPI, pivotez les formats sur le hub sans CLI locale : openapi-to-json-schema extrait un schéma des components OpenAPI ; json-schema-to-openapi enveloppe un schéma standalone pour import portail.

Mentalité contract testing

La validation navigateur accélère le feedback ; la CI garde les suites de régression. Collez des instances représentatives — happy path, nulls, bornes enum. Documentez le draft dans $schema à côté de chaque fichier schéma partagé dans git.

Échecs de validation fréquents

Erreurs d'instance courantes

Ces cas reviennent constamment en support et jobs CI flaky.

Propriété required manquante — instancePath sur parent ou /
Mauvais type — string au lieu d'integer (fréquent après sérialisation formulaire)
additionalProperties: false — champs en trop après erreur de versioning API
Violations formatdate-time, email, uuid (via ajv-formats)
Mismatch enum — codes statut ou régions non documentés dans le payload
Erreurs de compilation de schéma

Le mode Strict et les drafts non supportés surfacent ici avant validation d'instance.

URL $schema non supportée — migrer vers Draft-07 ou 2020-12
$ref externe — erreur dure ; inlinez ou bundlez les refs localement
YAML collé dans l'éditeur schéma — convertir en JSON ou coller JSON uniquement
Schéma > 512 KiB — scinder ou utiliser bundlers CI
Keywords inconnus sous Strict — retirer ou déplacer selon politique org

Conclusion

La validation JSON Schema comble l'écart entre JSON parseable et données API fiables. Commencez par la syntaxe si besoin, puis validez les instances contre des schémas Draft-07 ou 2020-12 avec des erreurs instancePath claires — localement avant la CI. Extrayez les schémas depuis OpenAPI quand le contrat vit dans la spec, et gardez des limites honnêtes sur refs, drafts et taille.

Validez votre instance JSON contre un schéma maintenant

Syntaxe d'abord avec json-validator — validation schéma ensuite
Déclarez $schema explicitement dans chaque fichier schéma partagé
Activez Strict pour revue de schéma avant merge, pas pour debug payload loose
Bundlez les $ref externes localement — l'outil navigateur ne fetch jamais les URLs
Chaînez avec openapi-to-json-schema quand la source est un fichier OpenAPI
Partager cet article
Partager cet article: