Collez un exemple JSON et copiez les déclarations Go correspondantes : structs, slices, champs scalaires et balises json, objets imbriqués en ligne ou en types nommés.
Fonctionne localement dans votre navigateurCollez un exemple JSON et l’outil écrit les déclarations de types Go correspondantes : structs, slices, champs scalaires et balises json qui relient chaque champ à sa clé. Les noms suivent les conventions de Go, les objets imbriqués restent en ligne ou deviennent des types nommés, et les formes identiques ne sont déclarées qu’une fois.
La conversion s’exécute dans cet onglet. Rien n’est envoyé et aucune requête n’est faite : la page fonctionne hors ligne et accepte des données que vous ne pouvez pas transmettre à un tiers.
Les nombres entiers deviennent int s’ils tiennent sur 32 bits, sinon int64 ; les décimales deviennent float64. Un nombre écrit 1.0 reste float64 malgré son apparence entière, et un tableau mêlant entiers et décimales devient []float64. Un tableau qui mélange des valeurs sans type commun — nombre et chaîne, objet et nombre — retombe sur []interface{}.
Un tableau d’objets est fusionné en un seul struct réunissant toutes les clés ; une clé absente de certains éléments reçoit omitempty. Un champ objet dans un élément et scalaire dans un autre devient interface{}. Les chaînes au format horodatage RFC 3339 (2024-05-06T07:08:09Z) deviennent time.Time, ce qui suppose d’ajouter l’import time à la main.
Les noms de champs sont des noms Go exportés : user-id devient UserID, et les sigles courants comme ID, URL, API et HTTP gardent leurs majuscules. La clé d’origine est conservée dans la balise du struct : le code généré correspond toujours au payload collé.
Deux clés qui donnent le même nom Go reçoivent un suffixe numérique (UserID et UserID2), et les clés composées uniquement de symboles deviennent Field, Field2, etc. Les guillemets et les barres obliques inverses d’une clé sont échappés dans la balise pour que le code reste valide.
Ce sont uniquement des déclarations : pas de clause package, pas d’imports, pas de méthodes, et rien n’est compilé ici. Les types décrivent l’exemple collé, pas un schéma — un champ null ou absent de cet exemple est typé d’après ce que vous avez fourni ; vérifiez la nullabilité et la largeur des nombres sur un payload plus complet.
Les documents volumineux sont analysés dans le navigateur et limités par la mémoire de votre appareil. Considérez le résultat comme un point de départ à relire : renommez les types, ajoutez ce que l’exemple ne montrait pas, puis passez le fichier au compilateur.