Validateur de schéma JSON

Collez un schéma et un document, choisissez le brouillon, et le validateur vérifie le document selon chaque mot-clé utilisé par votre schéma, type, required, enum, oneOf, $ref, if/then/else, format personnalisé, en rapportant chaque violation avec un pointeur de style JSONPath vers l’emplacement exact de l’infraction.

Comment valider par rapport à un schéma

  1. 1

    Collez le schéma

    Brouillon JSON Schema 04, 07 ou 2020-12. Le mot-clé `$schema` (s'il est présent) sélectionne automatiquement le brouillon.

  2. 2

    Collez le document

    Le JSON que vous souhaitez valider. Doit d'abord être un JSON valide, les erreurs de syntaxe sont affichées avant l'évaluation du schéma.

  3. 3

    Valider

    Chaque violation est rapportée avec un pointeur JSON (`/user/email`) et le mot-clé échouant (`format`, `required`, etc.).

  4. 4

    Corriger et re-valider

    Modifiez l'un ou l'autre côté et le statut se met à jour en direct.

Mots-clés supportés

Noyau : type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Composition : allOf, anyOf, oneOf, not.

Applicateurs : properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Conditionnels : if, then, else, dependentSchemas.

Références : $ref, $defs, $id, $anchor.

Formats (avec validation lorsque activé) : date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Sortie d’erreur

ÉCHEC  /user/email        format            "not-an-email" n'est pas un "email" valide
ÉCHEC  /user/age          minimum           -3 est inférieur au minimum 0
ÉCHEC  /orders/0/total    type              "42" n'est pas de type "number"
ÉCHEC  /                  required          propriété requise "shippingAddress" manquante

Chaque erreur inclut le chemin et le mot-clé qui a échoué, ce qui permet de le localiser rapidement dans votre éditeur.

Différences de brouillon qui piquent

Mot-clé Brouillon 04 Brouillon 07 Brouillon 2020-12
id vs $id id $id $id
exclusiveMaximum comme booléen Oui Nombre Nombre
Syntaxe du tableau items items items prefixItems
$ref permet des clés voisines Non Non Oui

Définissez le bon brouillon ; valider un schéma de brouillon 04 comme 2020-12 interprétera mal id et certaines autres subtilités.

Flux de travail typiques

  • Test de contrat API : avant un déploiement, confrontez le schéma OpenAPI généré/mis à jour à de vraies réponses d’échantillon.
  • Renforcement de la configuration : validez chaque configuration YAML/JSON dans la CI par rapport à un schéma avant de fusionner.
  • Ingestion de données : rejetez les charges utiles qui ne correspondent pas à la forme attendue tôt, avec un message d’erreur clair.

Erreurs courantes

  • Oublier l’application de format. Par défaut, la plupart des validateurs traitent les formats inconnus comme uniquement annotatifs. Activez la validation de format strict pour réellement rejeter les mauvais emails et dates.
  • Utilisation excessive de oneOf. Si deux branches de oneOf se chevauchent, le document échouera (il doit correspondre exactement à un). Utilisez anyOf ou des modèles de discriminateur.
  • Schémas stricts avec additionalProperties: false. Ajouter un nouveau champ optionnel devient un changement de rupture. Omettez-le à moins que vous ne souhaitiez vraiment un objet fermé.

Questions fréquentes

Oui. Les brouillons 2020-12, 07 et 04 sont tous pris en charge. Le validateur lit le mot-clé $schema de votre document pour choisir le bon, ou revient au sélecteur dans l’interface.

Les formats standards (email, date-time, uuid, ipv4, etc.) sont validés lorsque le format strict est activé. Les formats personnalisés déclarés dans votre schéma sont traités comme uniquement annotatifs à moins que vous ne fournissiez une regex avec pattern.

Les références internes (#/$defs/foo) sont résolues automatiquement. Les références HTTP externes ne sont pas récupérées par défaut, pour des raisons de sécurité. Intégrez d’abord vos références externes, ou utilisez un outil dédié qui prend en charge la résolution de $ref à distance.

Oui. Le schéma et le document restent locaux. Le contenu collé n’est jamais téléchargé, sûr pour les contrats API internes et les données sensibles.

Outils similaires

Outil disponible dans d’autres langues