Ébaucher un contrat de données
Partez d’une réponse API ou d’un fichier d’échange réel, puis confrontez la structure proposée à la documentation métier. Ajoutez les contraintes que l’échantillon ne peut pas démontrer.
Analysez un document JSON et inférez automatiquement les types, propriétés, tableaux et champs requis.
Créez une première version de JSON Schema à partir d’un document JSON représentatif. Le générateur identifie les types, objets imbriqués, listes et propriétés observées pour décrire une structure réutilisable. Le schéma produit vise le draft 2020-12. Il constitue une proposition à vérifier, pas la découverte automatique de toutes les règles de votre API. Aucun document n’est envoyé à un service d’inférence : le navigateur analyse l’exemple et affiche un fichier JSON de schéma que vous pouvez relire, copier ou exporter.
Une chaîne devient un type string, un booléen boolean et null un type null. Les nombres entiers observés sont distingués des autres nombres. Les objets produisent properties ; les tableaux produisent items à partir de tous les éléments fournis, et non uniquement du premier. Les variantes de types peuvent être représentées par anyOf.
Quand plusieurs objets figurent dans le même tableau, leurs propriétés sont regroupées. Une clé manquante dans certains objets n’est pas ajoutée à required ; une clé toujours présente l’est. Cette règle dépend uniquement des exemples. Si votre seule réponse contient toujours un champ pourtant facultatif dans le contrat réel, le générateur ne peut pas deviner cette possibilité.
Les objets générés utilisent additionalProperties: false. Le schéma refuse donc les clés non observées, même si votre application pourrait normalement les accepter. Relisez ce choix avant d’utiliser le résultat sur des réponses futures. Une liste vide ne renseigne pas le type de ses futurs éléments : le schéma laisse alors leur forme ouverte plutôt que d’inventer un type.
L’inférence ne déduit ni format d’adresse e-mail, ni expression régulière, ni borne numérique, ni ensemble exhaustif de valeurs autorisées. Une date demeure une chaîne. Une valeur égale à 1 ne prouve pas une règle minimum: 1 ou const: 1. Les nombres sont analysés avec la représentation du navigateur ; protégez les grands identifiants en les transmettant sous forme de chaînes lorsque le contrat le prévoit.
Collez un JSON valide avec sa structure complète. Préférez des données anonymisées qui montrent les formes utiles plutôt que de grands volumes de valeurs répétitives.
Contrôlez les types inférés, la liste required et la fermeture des objets. Un champ null n’équivaut pas à une propriété absente.
Ajoutez formats ou bornes justifiés, puis vérifiez des exemples valides et invalides avant intégration. Le téléchargement produit un schéma JSON, pas un module TypeScript.
Partez d’une réponse API ou d’un fichier d’échange réel, puis confrontez la structure proposée à la documentation métier. Ajoutez les contraintes que l’échantillon ne peut pas démontrer.
Incluez des objets avec des champs omis, présents ou nulls pour distinguer caractère obligatoire et types acceptés. Des cas variés donnent une base plus représentative.
Copiez le schéma dans un validateur adapté à son draft et à ses mots-clés. Le générateur n’installe aucun contrôle automatique dans votre application.
id devient integer et active boolean. Les deux champs sont requis parce qu’ils figurent dans l’objet observé ; additionalProperties ferme ce modèle aux clés supplémentaires.
Entrée
{"id":1,"active":true}Résultat
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"active": {
"type": "boolean"
}
},
"required": [
"id",
"active"
],
"additionalProperties": false
}id figure dans les deux objets et reste obligatoire. name n’apparaît que dans le second : sa propriété est connue mais elle n’est pas requise.
Entrée
[{"id":1},{"id":2,"name":"Ada"}]Résultat
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}Non. Tous les éléments fournis participent à l’inférence. Les propriétés d’objets sont regroupées et les absences observées influencent required. Cela reste une analyse de l’échantillon, pas de données futures inconnues.
Le générateur ne l’a jamais vu absent dans le groupe d’exemples concerné. Retirez-le de required selon le contrat réel ou enrichissez l’échantillon avec un objet représentatif qui omet cette clé.
Les objets générés sont fermés avec additionalProperties: false. Modifiez cette règle si votre politique autorise de nouvelles propriétés ; ce choix doit être explicite avant de valider des évolutions de données.
Non. Il décrit des formes observées et nécessite une révision métier. Ajoutez les contraintes pertinentes puis exécutez un validateur prenant en charge le draft et les mots-clés réellement utilisés.
Outils associés
Des outils similaires ou complémentaires à celui-ci.
Validez un document JSON avec un schéma et localisez précisément chaque erreur.
Générez des interfaces TypeScript, des types, des schémas Zod ou JSON Schema à partir d’un exemple JSON.
Formatez, minifiez et validez un document JSON pour le rendre plus lisible ou plus compact.