Génération de types

JSON vers Godes modèles fondés sur vos réponses réelles

Comparez les deux enregistrements fournis. Le résultat contient le package et uniquement les imports nécessaires.

JSON vers Go

Entrée JSON

Analyse et génération dans ce navigateur. Aucune transmission ni conservation des données.

Résultat Go

Options de génération

Les nombres dans any nécessitent Decoder.UseNumber(). Les pointeurs ne distinguent pas absence et null.

3 déclarations · 2 types pointeurs

JSON vers Go prépare un modèle à partir de réponses API. Réunissez plusieurs enregistrements dans un tableau pour révéler les champs absents, les valeurs null et les changements de type.

Un exemple ne définit ni les champs obligatoires ni les règles métier. Relisez le résultat avec le contrat de votre API et testez le décodage dans votre projet.

Pourquoi utiliser JSON vers Go ?

Examiner chaque enregistrement

JSON vers Go analyse tous les éléments à la même position du tableau. Un champ apparu seulement dans le second exemple reste présent. Un type connu associé à null ou à une absence peut devenir un pointeur.

Deux fiches aux champs différents convergent vers une structure complète ; des repères creux signalent les valeurs absentes.

Préserver les nombres avant de choisir

Les entiers écrits simplement et compris dans int64 deviennent int64. Décimales, exposants et entiers plus grands utilisent json.Number, sans arrondi préalable par les nombres flottants de JavaScript.

Une longue suite de blocs numériques entre dans une structure de sortie sans perdre ses derniers blocs.

Relire les choix avant export

01

Fournir plusieurs variantes utiles

Regroupez les réponses de même forme dans un tableau. Des objets similaires placés sous des propriétés différentes gardent des types indépendants.

02

Choisir les inférences acceptables

Désactivez les dates si leur texte doit rester identique. Désactivez les noms imbriqués pour obtenir des structs anonymes. Sans balises json, la correspondance avec les clés originales disparaît.

03

Actualiser après modification

La génération automatique attend 350 ms. Désactivez-la pour afficher Générer, ou utilisez Ctrl/Cmd+Enter. Toute modification bloque copie et téléchargement jusqu’à la réussite du résultat courant.

Noms, pointeurs et types numériques

Des champs exportés et leurs clés

Ce convertisseur JSON transforme snake_case et camelCase en noms ASCII exportés. Il conserve les sigles tels que ID et ajoute des suffixes numériques aux collisions. Les balises activées conservent les clés originales prises en charge.

Des pointeurs quand le type est connu

Un scalaire ou une struct Go connue reçoit un pointeur si un exemple contient null ou omet le champ. Slices et maps représentent déjà nil. Un champ toujours null devient any ; un pointeur ne distingue pas absence et null explicite.

Tenir compte de l’écriture numérique

Seuls les entiers simples dans la plage signée de 64 bits deviennent int64. Même 1.0 et 1e3 deviennent json.Number : encoding/json ne les décode pas directement en entier. Vérifiez les erreurs de conversion avant vos calculs.

Structures imbriquées et dates

Les horodatages RFC3339 complets et valides, avec neuf chiffres fractionnaires au maximum, peuvent devenir time.Time. Tous les exemples non null doivent convenir. Les alias à la racine conservent les méthodes du type d’origine.

Limites du modèle généré

Code pour Go 1.18 et versions suivantes
La sortie utilise any et les balises compatibles avec encoding/json v1. Elle ne génère ni décodeur personnalisé, ni validation, ni omitempty, ni conversion de Schema. Exécutez gofmt et les tests dans votre projet.
Les balises ne représentent pas toutes les clés
Une clé vide, une virgule, des guillemets, une barre oblique inverse, un accent grave, un contrôle ou un emoji provoque une erreur de chemin si les balises sont activées. Utilisez une map ou un décodeur adapté. La clé - utilise la balise -, pour éviter son exclusion.
Les positions génériques demandent une option
Types incompatibles : any ; tableaux vides : []any ; objets vides : map[string]any. Activez Decoder.UseNumber() pour y décoder les nombres sans float64. Générer un type ne change pas le comportement par défaut du décodeur.
Un instant ne conserve pas tout le texte
Dates invalides, dates seules, fuseaux absents et fractions de plus de neuf chiffres restent string. time.Time peut normaliser le fuseau et les zéros finaux au réencodage. Désactivez l’inférence pour préserver la représentation exacte.
Entrée stricte et budgets limités
Commentaires, clés répétées, virgules finales et documents multiples sont refusés. Aucun import de fichier, accès URL ou réparation. Limites : 500 000 caractères en entrée, profondeur 100, 50 000 nœuds, 1 000 déclarations, 1 000 000 caractères en sortie.

Questions sur JSON vers Go

Comment obtenir des noms de champs exportés ?

Les noms commencent par une majuscule ASCII ; les sigles courants restent en capitales. Les collisions reçoivent un suffixe numérique. Les balises relient ces champs aux clés prises en charge, tandis que leur désactivation peut changer la correspondance au décodage.

Quel type choisir pour null et les champs manquants ?

Un scalaire ou une structure de type connu utilise par défaut un pointeur ; null seul devient any. Les slices et maps acceptent déjà nil. Absence et null explicite ne deviennent pas deux états distincts avec un simple pointeur.

Comment distinguer les entiers des décimaux ?

Un entier simple dans la plage int64 devient int64. Les décimales, exposants et grands entiers deviennent json.Number. Pour les nombres dans any, configurez également Decoder.UseNumber().

Que devient un champ dont le type varie dans un tableau ?

Des valeurs incompatibles à la même position produisent any. Chaque élément est analysé, pas seulement le premier. Des exemples représentatifs sont donc indispensables pour faire apparaître ces différences.

Quel travail évite la génération automatique de structs ?

JSON vers Go prépare les noms exportés, les balises et les déclarations imbriquées. Il reste à vérifier les exigences métier et les valeurs que vos exemples ne montrent pas. Testez le modèle avec votre décodeur réel.

Un cas d’inférence à améliorer ?

Partir d’une réponse représentative

Utilisez JSON vers Go avec plusieurs réponses et vérifiez pointeurs, nombres et horodatages avant d’exporter le modèle.