Aller au contenu

JSON vers JSON Schema

JSON to JSON Schema

Déduit un JSON Schema à partir d’un ou plusieurs échantillons, en réunissant les formes rencontrées.

Décrit un document d'exemple sous forme de JSON Schema (2020-12) : types, propriétés, `required` et `$defs` imbriquées pour les formes répétées. Utile pour un test de contrat, un composant OpenAPI, ou partout où un validateur attend un schéma plutôt qu'un exemple.

🔒 Fonctionne entièrement dans votre navigateurjson-schemajsoncodegenvalidation
Produire

JSON d’exemple

Déposez un fichier .json

Lu dans cet onglet. Rien n’est envoyé.

Donnez-lui tous les éléments dont vous disposez. Chaque enregistrement supplémentaire resserre la déduction : un champ absent de l’un d’eux est précisément ce qui le rend facultatif.

TypeScript

Comment s’en servir

  1. Collez autant d'enregistrements que vous en avez

    Chaque élément de chaque tableau est lu et fusionné, pas seulement le premier. Trois enregistrements en disent bien plus qu'un seul, car un champ absent de l'un d'eux est précisément ce qui rend ce champ facultatif.

  2. Nommez le type racine

    Les objets imbriqués sont nommés d'après la clé qui les porte, mise au singulier pour les tableaux : `users` donne donc un `User`. Seule la racine attend un nom de votre part.

  3. Lisez les décomptes sous la sortie

    Types, champs facultatifs, unions et nombre d'enregistrements fusionnés. Un décompte d'unions supérieur à zéro signifie qu'un champ portait deux sortes de valeurs différentes dans votre échantillon — cela vaut la peine d'y regarder avant de coller le résultat dans une base de code.

  4. Emmenez le schéma vers un validateur

    La sortie porte son mot-clé `$schema` : elle peut aller directement dans le validateur JSON Schema de ce site ou dans n'importe quelle implémentation 2020-12.

Questions fréquentes

De quel draft s'agit-il ?

Le draft 2020-12, déclaré dans le mot-clé `$schema`. Les formes réutilisables vont dans `$defs` et sont référencées par `$ref`, l'orthographe de ce draft ; l'outillage Draft-07 attend `definitions` à la place et ne résoudra pas ces références.

Pourquoi rien n'est-il contraint au-delà de son type ?

Aucun `format`, `minLength`, `pattern` ni `enum` n'est émis. Chacun d'eux serait inféré à partir d'une poignée d'enregistrements, et un schéma qui rejette des données de production valides est pire qu'un schéma simplement trop large. Ajoutez les contraintes que vous pouvez réellement justifier.

`additionalProperties` est-il défini ?

Il est laissé ouvert, ce qui veut dire que des clés supplémentaires passent la validation. Le fermer transformerait chaque champ que l'API ajoutera plus tard en échec de validation, et un échantillon ne peut pas vous dire si la forme est censée être fermée.

Comment décide-t-il de ce qui va dans `required` ?

Une propriété est requise lorsqu'elle était présente dans chaque enregistrement fusionné dans cette forme. Collez un seul enregistrement et tout est requis ; collez-en cinq et le schéma commence à vous dire quelque chose de réel.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.