Skip to content

Convertisseur JSON vers schéma Zod

Collez du JSON, obtenez un schéma Zod prêt à l'emploi instantanément, 100 % dans le navigateur. Typage z.number().int() correct, .optional() et .nullable(), plus un type z.infer. Gratuit.

Sans pistage Fonctionne dans le navigateur Gratuit
Options
0 car.
Sortie Zod
0 lignes
Sortie vérifiée par rapport à la sémantique d'analyse de Zod v3 et v4 sur des charges utiles d'API réelles. — Go Tools Team · 2 juil. 2026

Qu'est-ce qu'un schéma Zod ?

Un schéma Zod est une description de la forme d'une valeur, pensée d'abord pour TypeScript, qui valide les données à l'exécution et en déduit un type statique à la compilation. En générer un à partir d'un échantillon JSON évite d'écrire à la main le code de validation des réponses d'API, des formulaires ou des fichiers de configuration. Ce générateur de schémas Zod déduit les types corrects, marque les clés absentes comme .optional(), les valeurs null comme .nullable(), et vous fournit un type z.infer — le tout à 100 % dans votre navigateur.

Exemples

Réponse d'API

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
import { z } from "zod";

export const RootSchema = z.object({
  id: z.number().int(),
  name: z.string(),
  email: z.string(),
  active: z.boolean(),
  roles: z.array(z.string()),
});

export type Root = z.infer<typeof RootSchema>;

Une charge utile REST typique devient un schéma Zod prêt à l'emploi. Les nombres entiers sont déduits en z.number().int(), et le tableau roles devient z.array(z.string()). Un type z.infer est fourni gratuitement.

Objet imbriqué

{"repo":"zod","owner":{"login":"colinhacks","id":100}}
import { z } from "zod";

export const OwnerSchema = z.object({
  login: z.string(),
  id: z.number().int(),
});

export const RootSchema = z.object({
  repo: z.string(),
  owner: OwnerSchema,
});

export type Root = z.infer<typeof RootSchema>;

Les objets imbriqués deviennent leur propre schéma nommé (OwnerSchema) et sont référencés par champ. Les schémas enfants sont déclarés avant le parent qui les utilise, et les formes identiques sont déclarées une seule fois puis réutilisées.

Tableau d'objets (champ optionnel)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
import { z } from "zod";

export const UserSchema = z.object({
  id: z.number().int(),
  nick: z.string().optional(),
});

export const RootSchema = z.object({
  users: z.array(UserSchema),
});

export type Root = z.infer<typeof RootSchema>;

Les tableaux d'objets fusionnent en un seul schéma d'élément. Une clé absente de certains éléments devient .optional(), pour que l'analyse réussisse même en son absence.

Champ nullable et unification des nombres

{"items":[{"sku":"A1","discount":0.1},{"sku":"A2","discount":null}]}
import { z } from "zod";

export const ItemSchema = z.object({
  sku: z.string(),
  discount: z.number().nullable(),
});

export const RootSchema = z.object({
  items: z.array(ItemSchema),
});

export type Root = z.infer<typeof RootSchema>;

Un champ null dans certains échantillons mais typé dans d'autres devient .nullable(). Comme 0.1 a une virgule décimale, le nombre s'unifie en z.number() plutôt qu'en z.number().int().

Comment convertir du JSON en Zod

  1. 1

    Collez votre JSON

    Déposez un objet JSON, un tableau ou une réponse d'API dans le champ de saisie. La conversion démarre instantanément.

  2. 2

    Ajustez la sortie

    Renommez le schéma racine et activez ou non la ligne import, le type z.infer ou le mot-clé export selon le style de votre projet.

  3. 3

    Copiez ou téléchargez

    Récupérez le schéma Zod généré en un clic et collez-le directement dans votre couche de validation.

Common Use Cases

Valider les réponses d'API
Transformez un exemple de réponse REST ou GraphQL en schéma Zod et analysez-le à la frontière du fetch, pour que les données mal formées échouent tôt avec une erreur claire au lieu de se propager dans votre application.
Formulaires et saisies typés
Générez un schéma pour la saisie d'un formulaire ou d'une requête et réutilisez le type z.infer dans votre interface et vos gestionnaires pour une sûreté de typage de bout en bout.
Schémas tRPC et outils d'IA
Amorcez les schémas d'entrée et de sortie des procédures tRPC ou des outils d'IA à sortie structurée à partir d'une charge utile d'exemple au lieu de les écrire à la main.

Comment fonctionne la conversion

Inférence structurelle
Chaque objet devient un schéma nommé ; les formes identiques sont déclarées une seule fois puis réutilisées. Les tableaux d'objets fusionnent clé par clé, et les clés absentes de certains éléments deviennent .optional().
Correspondance de types correcte
Les entiers correspondent à z.number().int() et les décimaux à z.number(). Les chaînes, booléens et null correspondent à z.string(), z.boolean() et z.null() ; un tableau de primitifs mélangés devient un z.union().
Types TypeScript inclus
Un alias de type z.infer est émis pour le schéma racine, le schéma reste donc l'unique source de vérité et vos types ne divergent jamais de votre validation.
100 % côté navigateur
L'analyse et la génération s'exécutent dans votre navigateur sans aucun appel réseau, vos données restent donc privées.

Conseils pour des schémas Zod propres

Nommez votre schéma racine
Donnez un nom racine parlant, tel que User ou ApiResponse, au lieu du Root par défaut, pour un code lisible et auto-documenté.
Affinez z.unknown() et les unions
Les tableaux vides ou mixtes produisent z.unknown() ou un z.union() large. Collez un échantillon plus riche et représentatif pour que l'outil déduise des types précis, puis resserrez tout ce qui reste ambigu.
Validez à la frontière
Appelez safeParse() là où entrent des données non fiables — réponses d'API, saisies de formulaire, webhooks — pour intercepter les données incorrectes avant qu'elles n'atteignent la logique de votre application.

Questions fréquentes

Comment convertir du JSON en schéma Zod ?
Collez votre JSON dans le champ à gauche. Le convertisseur l'analyse instantanément dans votre navigateur et génère à droite un schéma Zod, accompagné d'un alias de type z.infer. Cliquez sur Copier pour le récupérer — sans envoi, sans compte, sans attente.
Quelle est la différence entre JSON vers Zod et JSON Schema vers Zod ?
Cet outil prend une valeur JSON d'exemple — une réponse d'API ou un objet — et déduit un schéma Zod à partir de sa forme. JSON Schema vers Zod est une tâche différente : il convertit un document JSON Schema existant en Zod. Si vous avez des données brutes, utilisez cet outil. Si vous avez déjà un fichier JSON Schema, convertissez-le plutôt.
Comment obtenir un type TypeScript à partir du schéma ?
Chaque résultat inclut un alias de type z.infer, vous obtenez donc un type Root entièrement typé sans l'écrire à la main. Gardez le schéma comme unique source de vérité et laissez TypeScript en dériver le type, pour que les deux ne divergent jamais. Vous pouvez désactiver la ligne z.infer dans les Options si vous ne voulez que le schéma.
Comment les champs optionnels et null sont-ils gérés ?
Lorsqu'une clé apparaît dans certains éléments d'un tableau mais pas dans d'autres, son champ est marqué .optional(). Un champ null dans certains échantillons et typé dans d'autres devient .nullable(). Un champ toujours null devient z.null(). Zod traite optional et nullable indépendamment, le schéma reflète donc la façon dont vos données varient réellement.
Quel type numérique génère-t-il ?
Les nombres entiers deviennent z.number().int() ; toute valeur écrite avec une virgule décimale ou un exposant devient z.number(). Si un champ mélange entiers et décimaux selon les échantillons, il s'unifie en z.number() pour que la validation ne rejette jamais une valeur légitime.
La sortie fonctionne-t-elle avec Zod 3 et Zod 4 ?
Oui. Le code généré utilise le sous-ensemble commun et stable — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable et z.infer — qui se comporte de la même façon dans Zod 3 et Zod 4. Assurez-vous simplement que le paquet zod est installé dans votre projet.
Comment valider des données avec le schéma généré ?
Importez le schéma et appelez RootSchema.parse(data) pour lever une erreur sur une entrée invalide, ou RootSchema.safeParse(data) pour obtenir un résultat typé de succès ou d'erreur sans lever d'exception. C'est idéal aux frontières de confiance comme les réponses d'API, les saisies de formulaire et la configuration d'environnement.
Comment les tableaux et les types mixtes sont-ils gérés ?
Un tableau d'un seul type devient z.array de ce type. Un tableau d'objets fusionne clé par clé en un seul schéma d'élément. Un tableau qui mélange des types primitifs devient un z.union, et tout ce qui est plus ambigu se replie sur z.unknown pour que vous puissiez l'affiner à partir d'un échantillon plus riche.
Mes données JSON sont-elles privées et sécurisées ?
Oui. La conversion s'exécute à 100 % dans votre navigateur en JavaScript. Votre JSON — y compris les jetons, identifiants ou données client — ne quitte jamais la page et n'est jamais envoyé à un serveur.
L'outil est-il gratuit ? Faut-il un compte ?
Il est entièrement gratuit, sans inscription, sans limites et sans publicités encombrant l'espace de travail.