Utilo

JSON vers types

Générez des structs Go, des structs Rust serde, des schémas Zod, des modèles Pydantic, des data classes Kotlin, des records Java, des classes C#, du Swift Codable et des types TypeScript à partir de JSON. Détecte les champs optionnels et nullables dans les tableaux.

Ce que fait ce générateur de types JSON

Écrire des classes de modèle à la main pour une grande réponse API est lent et sujette à erreurs. Collez un échantillon JSON et cet outil infère un modèle de type complet et l'imprime comme Go structs avec des balises json, Rust structs avec des dérivés serde, schémas Zod, modèles Pydantic, classes de données Kotlin, enregistrements Java, classes C #, structures Swift Codable ou interfaces TypeScript. Les objets imbriqués deviennent leurs propres types nommés, les tableaux d'objets sont fusionnés de sorte que chaque champ vu dans n'importe quel élément est capturé, et l'inférence s'exécute dans un Web Worker afin que même des échantillons de plusieurs mégaoctets ne gelent pas la page.

Mode d'emploi

  1. Coller JSON dans l'entrée ou charger l'échantillon.
  2. Définir le nom de type de racine, par exemple User ou OrderResponse.
  3. Sélectionnez l'onglet langue cible. La sortie se régénère instantanément.
  4. Copiez le code dans votre projet et ajustez les noms ou les types où votre connaissance du domaine est supérieure à l'inférence.

Comment fonctionne l'inférence

  • ** Champs facultatifs:** si une clé manque dans certains éléments d'un tableau, elle est marquée comme facultative (? dans TS, Option<T> dans Rust, omitempty dans Go, = None dans Pydantic).
  • ** champs annulés:** une valeur null rend le champ nul dans la langue cible.
  • Nombres: Les entiers et les flottants sont tracés séparément, de sorte que 42 devient int64/i64/Long tandis que 4.2 devient un type de flottant.
  • Types mixtes: lorsque le même champ contient différents types, les langages avec des unions (TypeScript, Zod, Pydantic) obtiennent une union, et les autres reviennent à un type de valeur JSON générique.
  • Nommage: Les touches telles que user_id ou created-at sont converties en noms de champs idiomatiques par langue, la clé originale étant conservée dans des balises ou des annotations (json:"user_id", #[serde(rename)], @SerialName, CodingKeys).

Des conseils

  • Donnez-lui un échantillon représentatif. Un seul objet avec un tableau vide ne dit rien à l'outil sur les éléments du tableau.
  • Mélanger plusieurs réponses dans un tableau de niveau supérieur pour capturer des champs optionnels de manière fiable.
  • La sortie Zod exporte à la fois le schéma et le type déduit, donc vous obtenez la validation en temps d'exécution et la saisie statique ensemble.

Questions fréquentes

Mon JSON est téléchargé quelque part ?

Je ne veux pas. L'analyse et la génération de code se produisent dans votre navigateur dans un travailleur de fond.

Pourquoi un champ est-il écrit comme any ou interface{}?

C'était null dans chaque échantillon, ou un tableau vide, donc aucun type concret ne pouvait être déduit. Fournir un échantillon avec une valeur réelle.

Ça gère les rendez-vous ?

JSON n'a pas de type de date, donc les chaînes ISO restent des chaînes. Changez-les en time.Time, datetime ou Date à la main si votre décodeur le supporte.

Je peux générer un schéma JSON ?

Utilisez la sortie Zod ou Pydantic; les deux bibliothèques peuvent exporter le schéma JSON directement.

Oui. Tout le traitement s'effectue directement dans votre navigateur grâce à JavaScript, aux Web Workers et aux API Web. Rien de ce que vous saisissez, collez ou importez n'est envoyé à nos serveurs.

Cette page a été traduite automatiquement depuis l'anglais. Si vous repérez une erreur, dites-le-nous.