Convertisseur JSON vers schéma Zod
Générez un schéma Zod à partir d’un JSON d’exemple, pour que la même forme soit vérifiée à l’exécution et déduite comme type TypeScript.
Entrée
Résultat
Le résultat apparaîtra ici.Les types TypeScript disparaissent à la compilation ; un schéma Zod est toujours là quand la réponse arrive réellement, et z.infer le retransforme en type. Cet outil génère le schéma à partir d’un échantillon avec le moteur de rendu typescript-zod de quicktype. La sortie importe zod comme le recommande la version 4, avec import * as z from "zod", déclare un schéma par forme d’objet et exporte le type déduit à côté de chacun. Nos tests exécutent le code généré sous zod 4 et vérifient qu’il accepte l’échantillon même dont il est issu — le minimum qu’un schéma généré devrait faire.
Comment ça marche
- Les clés absentes de certains éléments d’un tableau deviennent .optional() ; les clés parfois null deviennent une union avec z.null().
- Les schémas sont émis dans l’ordre des dépendances, de sorte que chaque schéma imbriqué est déclaré avant le schéma d’objet qui l’utilise.
- La détection des dates transforme les horodatages ISO en z.coerce.date(), qui convertit la chaîne en Date ; laissez-la désactivée pour garder z.string().
- Les schémas sont de simples appels z.object, donc les clés inconnues sont supprimées à l’analyse ; passez à la main à z.strictObject ou z.looseObject si vous avez besoin d’un autre comportement.
Où vont vos données
Nulle part. Cet outil s’exécute entièrement dans votre navigateur : le texte collé est traité par la page, jamais transmis à un serveur ni consigné dans un journal.
Cet outil est gratuit et ne demande aucun compte. Ses résultats n’existent que dans la page ouverte et ne sont enregistrés nulle part.
Ce que ça coûte
Cet outil est gratuit, sans connexion ni points.
Questions fréquentes
- La sortie fonctionne-t-elle aussi avec Zod 3 ?
- Oui. Les appels qu’elle utilise — z.object, z.array, z.union, z.null, .optional() et z.coerce.date() — existent dans les deux versions majeures, et l’import d’espace de noms fonctionne aussi avec 3.x. Ce qui a changé entre les versions, c’est la mise en forme des erreurs et certaines API avancées, dont aucune n’apparaît dans le code généré.
- Pourquoi le schéma de premier niveau est-il un tableau d’un autre schéma ?
- Parce que l’échantillon est un tableau. La forme des éléments reçoit son propre schéma — RepoElementSchema pour l’exemple GitHub — et le nom de premier niveau sert pour le tableau, ce qui vous permet de valider un seul élément ou toute la liste avec le même fichier.
- À quel point le schéma généré est-il strict ?
- Exactement autant que l’échantillon, c’est-à-dire peu. Un champ chaîne accepte n’importe quelle chaîne, pas seulement les valeurs que vous avez collées, et les nombres sont z.number() qu’ils soient entiers ou non. Resserrez-le ensuite avec .int(), z.url(), z.email() ou z.enum() partout où le contrat de votre API en dit plus qu’un échantillon ne le peut.
L’open source derrière
Cet outil fonctionne grâce à glideapps/quicktype, publié sous licence Apache-2.0. Si vous avez besoin du même comportement dans votre propre programme, c’est cette bibliothèque qu’il faut utiliser.
glideapps/quicktypeAussi appelé
- json vers zod
- générateur schéma zod
- générer schéma zod depuis json
- json vers zod en ligne
- schéma zod v4
- validation typescript à l’exécution