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.
Génération de types
Comparez les deux enregistrements fournis. Le résultat contient le package et uniquement les imports nécessaires.
Analyse et génération dans ce navigateur. Aucune transmission ni conservation des données.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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().
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.
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 ?
Utilisez JSON vers Go avec plusieurs réponses et vérifiez pointeurs, nombres et horodatages avant d’exporter le modèle.