← Tous les outils Code Gen

Générateur de structs Go depuis JSON

Collez du JSON et obtenez instantanément des structs Go prêtes pour la production avec des tags json appropriés.

0 car.

100% côté client

Tout le traitement s'exécute dans votre navigateur. Vos données JSON ne sont jamais envoyées à un serveur.

Comment JSON se mappe aux structs Go

Go utilise des champs de struct exportés avec des tags json entre backticks pour la sérialisation JSON. Le générateur crée une struct pour chaque objet JSON, avec un champ exporté par clé. Les noms de champs suivent les conventions Go : ils sont exportés (PascalCase), et la clé JSON originale est préservée dans le tag json:"key". Ainsi "firstName" en JSON devient FirstName string `json:"firstName"` en Go.

Le mappage de types suit les règles standard encoding/json : les chaînes JSON deviennent string, les entiers int64, les décimaux float64, les booléens bool, et les tableaux des slices ([]T). Les objets imbriqués génèrent des types struct nommés supplémentaires. Un champ pouvant être null est typé comme pointeur (*T) pour que la valeur zéro nil représente proprement JSON null.

L'option de tag omitempty peut être activée pour chaque champ — `json:"key,omitempty"` omet le champ de la sortie marshalée quand il contient sa valeur zéro. C'est le pattern Go standard pour les champs API optionnels.

Conventions de nommage et idiomes Go

Go a des conventions de style strictes imposées par gofmt et golint. Le générateur les applique automatiquement : les acronymes comme "id", "url", "http" et "api" sont mis en majuscules en ID, URL, HTTP et API respectivement, suivant le guide de style officiel Go. Par exemple "userId" devient UserID et "apiUrl" devient APIURL.

Les noms de struct sont dérivés des clés d'objet JSON en PascalCase. La struct racine est nommée "Root" par défaut (personnalisable). Quand la même structure JSON apparaît plusieurs fois sous différentes clés, le générateur détecte la forme dupliquée et réutilise le même type de struct.

La sortie inclut une déclaration de package (par défaut "main" pour les prototypes rapides, modifiable) et l'import nécessaire pour "encoding/json" si des fonctions helper Marshal/Unmarshal sont générées avec les structs.

Flux de travail de développement Go

Les développeurs Go travaillant avec des API REST passent beaucoup de temps à écrire manuellement des définitions de struct qui reflètent les réponses JSON. Collez la réponse API, générez les structs et utilisez immédiatement json.Unmarshal pour analyser la réponse en valeurs Go typées.

Lors de la construction d'outils CLI avec cobra ou de gestionnaires HTTP avec net/http, des structs de requête et de réponse bien typées sont essentielles. Le générateur produit des structs prêtes à utiliser avec json.NewDecoder(r.Body).Decode(&req) et json.NewEncoder(w).Encode(resp).

Les projets de modules Go qui appellent des API tierces gardent souvent les fichiers de struct générés dans un package internal/models. La sortie du générateur s'intègre parfaitement dans ce pattern avec un nom de package configurable.

FAQ

Mes données sont-elles envoyées à un serveur ?

Non. Tout le traitement s'effectue entièrement dans votre navigateur. Votre JSON ne quitte jamais votre appareil.

Comment les mots réservés Go sont-ils gérés comme noms de champs ?

Les mots réservés Go comme "type", "func", "var", "map" et "chan" reçoivent un underscore en suffixe (ex. Type_) et le tag json préserve le nom de clé original.

Les tableaux de types mixtes sont-ils gérés ?

Quand un tableau JSON contient des éléments de types différents, le type d'élément de slice devient interface{} (ou any en Go 1.18+), reflétant la nature dynamique des données.

Puis-je générer avec des tags omitempty par défaut ?

Oui. Un toggle global ajoute omitempty à chaque tag de champ, ce qui est le choix le plus courant pour les structs de requête API où les champs sont souvent optionnels.

Le générateur gère-t-il les JSON profondément imbriqués ?

Oui. Les objets arbitrairement imbriqués produisent chacun leur propre struct nommée, et la struct parente la référence par nom. Toutes les structs sont émises dans un seul fichier en ordre de dépendance.

Outils similaires