Catégorie: Développement

Convertisseur JSON vers schéma Zod

Idée interneUn outil manque ?

Générez un schéma Zod à partir d'un échantillon JSON sans envoyer vos données

Collez du JSON et générez un schéma Zod dans votre navigateur. Inférez objets, tableaux, chaînes, nombres, booléens, valeurs nulles et champs facultatifs, puis copiez une sortie prête pour TypeScript. Rien n'est envoyé.

Schéma Zod
import { z } from "zod";

export const userSchema = z.object({
  id: z.number(),
  name: z.string(),
  isActive: z.boolean(),
  score: z.null(),
  tags: z.array(z.string()),
  address: z.object({
    city: z.string(),
    country: z.string(),
  }),
  posts: z.array(z.object({
    slug: z.string(),
    views: z.number(),
    pinned: z.boolean().optional(),
  })),
});

export type User = z.infer<typeof userSchema>;

Inféré à partir de cet échantillon seulement : il voit qu'un champ contenait une chaîne, pas que cette chaîne doit être un e-mail, respecter une longueur minimale ou correspondre à l'une de quelques valeurs autorisées. Considérez le résultat comme un point de départ et resserrez les règles vous-même.

Tout sur cette page est traité dans votre navigateur. Rien n'est envoyé.

Tout sur cette page est traité dans votre navigateur. Rien n'est envoyé.

À quoi sert cet outil

Cet outil lit un échantillon JSON en local et rédige le schéma d'objet Zod correspondant, y compris les objets imbriqués, les tableaux et les unions. Quand un tableau contient des objets qui ne concordent pas — un élément a un champ `pinned` et le suivant non — la clé est marquée `.optional()` au lieu d'être écartée en silence, car c'est justement cet écart que vous aviez le plus besoin de remarquer. Une valeur parfois nulle devient `.nullable()` plutôt qu'une union à deux membres. Ce qu'il ne peut pas faire, c'est inventer des règles qu'il n'a jamais vues : un échantillon montre qu'un champ contenait une chaîne, pas que cette chaîne doit être un e-mail, rester sous 80 caractères ou faire partie de trois valeurs autorisées. La sortie est un échafaudage à resserrer, pas un contrat fini.

Mode d'emploi

  1. Collez un échantillon JSON représentatif — plus il couvre de variations, meilleure est l'inférence.
  2. Nommez le schéma et choisissez d'inclure ou non l'import zod et le type inféré.
  3. Copiez le code généré, puis resserrez les règles de champ que votre échantillon ne pouvait pas montrer.

Confidentialité

Cet outil fonctionne entièrement dans votre navigateur. Ce que vous saisissez n'est jamais envoyé, stocké ni partagé : fermer l'onglet suffit à tout effacer.

Questions fréquentes

Mon JSON est-il envoyé ?
Non. Le JSON est analysé et le schéma généré entièrement dans l'onglet du navigateur ; ni l'entrée ni la sortie ne sont transmises à un serveur, journalisées ou stockées.
Quelle est la précision de la validation inférée ?
Exactement celle de votre échantillon. Elle restitue fidèlement la structure et les types, mais ne peut pas connaître les contraintes que la structure n'exprime pas : formats, plages, énumérations, ou quels champs sont réellement obligatoires en production. Relisez chaque champ avant de vous y fier.
Gère-t-il les tableaux et les champs facultatifs ?
Oui. Les tableaux deviennent z.array(...), et quand les objets d'un tableau n'ont pas les mêmes clés, celles qui ne sont pas partout sont marquées .optional(). Un champ parfois nul devient .nullable().
Puis-je utiliser la sortie en TypeScript ?
Oui. Le fichier généré exporte le schéma et, si vous laissez l'option activée, un alias de type `z.infer` : vous obtenez un validateur et le type statique correspondant depuis la même source.