UTILS.
100 % dans le navigateur
🛡️

JSON vers schéma Zod

Collez un exemple de valeur JSON et générez un schéma Zod ainsi qu'un type TypeScript inféré, pour valider une même forme à l'exécution et typer à la compilation.

sortie

À propos de cet outil

L'outil JSON vers schéma Zod transforme un exemple JSON collé en un schéma Zod prêt à l'emploi et le type TypeScript correspondant. Zod est la bibliothèque de validation TypeScript dominante, et écrire à la main des arbres z.object pour de vraies charges utiles d'API est lent et source d'erreurs. Ce convertisseur analyse votre JSON avec JSON.parse, parcourt la valeur récursivement et produit du Zod idiomatique : les chaînes deviennent z.string(), les entiers z.number().int(), les autres nombres z.number(), les booléens z.boolean(), null z.null(), et les objets imbriqués leurs propres schémas z.object({...}) nommés.

Tout s'exécute localement dans votre navigateur — votre JSON est analysé dans la page et jamais téléversé, de sorte que les charges utiles sensibles restent sur votre appareil. Les tableaux infèrent le type de leurs éléments en fusionnant en profondeur chaque élément, si bien qu'un tableau d'objets aux clés légèrement différentes produit un schéma unique où les clés absentes de certains éléments sont marquées .optional(). Les chaînes de date-heure ISO-8601 sont reconnues et émises en z.string().datetime(). Les clés d'objet qui ne sont pas des identifiants valides sont mises entre guillemets en toute sécurité.

La sortie est un module complet : un const exporté pour chaque schéma d'objet (les enfants définis avant les parents qui les référencent) suivi de export type Root = z.infer<typeof Root>, ce qui vous donne des types à la compilation gratuitement. Utilisez le champ de nom racine pour renommer le schéma de plus haut niveau, et la bascule de clés manquantes pour traiter les clés absentes comme .optional() (par défaut) ou .nullable(). Copiez le résultat ou téléchargez-le en fichier .ts.

Foire aux questions

Comment les types JSON sont-ils mappés vers Zod ?
string vers z.string(), une chaîne de date-heure ISO vers z.string().datetime(), les entiers vers z.number().int(), les autres nombres vers z.number(), les booléens vers z.boolean(), null vers z.null(), les tableaux vers z.array(...), et les objets vers un z.object({...}) nommé. Les tableaux vides deviennent z.array(z.unknown()).
Comment les champs optionnels ou nullables sont-ils gérés ?
Lorsque les éléments d'un tableau ou des frères fusionnés n'ont pas une clé, celle-ci est marquée .optional(). Une valeur vue comme null devient z.null() ou ajoute .nullable(). La bascule de clés manquantes vous laisse émettre .optional() (par défaut) ou .nullable() pour les clés absentes de certains échantillons.
Me donne-t-il aussi un type TypeScript ?
Oui. Après le schéma, il émet export type Root = z.infer<typeof Root>, de sorte que le type statique inféré est dérivé du schéma lui-même — une seule source de vérité pour la validation à l'exécution et les types à la compilation.
Mon JSON est-il téléversé quelque part ?
Non. L'analyse et la génération de code se déroulent entièrement dans votre navigateur avec JSON.parse et du JavaScript standard. Rien n'est envoyé à un serveur, vous pouvez donc coller en toute sécurité des réponses d'API privées.

Plus d'outils