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.
Options
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
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
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
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 ?
Quelle est la différence entre JSON vers Zod et JSON Schema vers Zod ?
Comment obtenir un type TypeScript à partir du schéma ?
Comment les champs optionnels et null sont-ils gérés ?
Quel type numérique génère-t-il ?
La sortie fonctionne-t-elle avec Zod 3 et Zod 4 ?
Comment valider des données avec le schéma généré ?
Comment les tableaux et les types mixtes sont-ils gérés ?
Mes données JSON sont-elles privées et sécurisées ?
L'outil est-il gratuit ? Faut-il un compte ?
Outils connexes
Voir tous les outils →Décodeur et Encodeur Base64
Encodage et formatage
Décodez et encodez en Base64 en ligne gratuitement. Conversion en temps réel, support UTF-8 et émojis. 100 % privé, dans votre navigateur.
Convertisseur Base64 en Image
Encodage et formatage
Décodez une chaîne Base64 ou un URI de données en image dans votre navigateur. Aperçu, dimensions et MIME, puis téléchargement en PNG, JPG, GIF, SVG. Sans envoi.
Convertisseur CSV vers JSON
Encodage et formatage
Convertissez du CSV en JSON dans le navigateur. RFC 4180, inférence de types, ligne d'en-tête, sûr pour grands entiers. 100 % privé, sans envoi.
Convertisseur .env vers JSON
Encodage et formatage
Collez un fichier .env, obtenez du JSON instantanément. Vos mots de passe et clés API ne quittent jamais le navigateur — 100 % privé, sans envoi.
Décodeur d'entités HTML gratuit — Décoder le HTML
Encodage et formatage
Décodez les entités HTML et déséchappez le HTML en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Reconvertit les références nommées, décimales & hex en caractères ; jamais envoyé.
Encodeur d'entités HTML gratuit — Échapper le HTML
Encodage et formatage
Encodez les entités HTML et échappez les caractères spéciaux (< > & " ') en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Sortie nommée, décimale ou hexadécimale ; jamais envoyée.