À propos de cet outil
L’outil génère des structures nommées et des slices pour Go 1.18+. Les champs deviennent des identifiants exportés valides ; les tags json conservent les clés lorsque possible. Vérifiez les contraintes d’encoding/json pour les clés particulières.
Mode d’emploi
- Saisissez du JSON ; plusieurs objets aident à détecter les champs manquants.
- Choisissez le nom de la structure racine.
- Cliquez sur « Convertir » et vérifiez champs exportés, tags json, pointeurs nullables et slices.
- Copiez ou téléchargez le source Go, puis adaptez-le au package et aux conventions du projet.
Exemples
- {"first_name":"Tom"} : produit FirstName avec le tag json:"first_name".
- [{"id":1,"name":"Tom"},{"id":2}] : name est facultatif, avec *string et omitempty.
- {"matrix":[[1,2],[3,4]]} : le type déduit est [][]int64.
Correspondance des types
Chaînes → string, entiers sûrs → int64, décimaux et mélanges numériques → float64, booléens → bool, tableaux → []T. Les types connus absents ou nullables utilisent des pointeurs adaptés ; les absences ajoutent omitempty. Les éléments inconnus, uniquement null ou incompatibles deviennent any. Cible : Go 1.18+. Les champs sont exportés, les noms stables et distincts, les tags échappés en chaînes Go valides. encoding/json attribue un sens particulier aux virgules, tirets et à certaines clés de contrôle ; les clés non directement réversibles sont signalées. Une syntaxe valide ne garantit pas toute correspondance JSON. Limites : 1 MiB en entrée et en sortie, 64 niveaux, 100000 nœuds, 5000 champs fusionnés, 256 types. Entiers non sûrs, valeurs non finies et sous-dépassements vers zéro sont refusés ; les autres décimaux suivent la précision du navigateur.
Usages courants
- Préparer des types Go pour des exemples de réponses de service.
- Repérer les besoins de pointeurs pour les champs nullables ou facultatifs.
- Créer structures nommées et slices pour du JSON imbriqué.
Confidentialité
L’analyse JSON et la génération Go se font dans le navigateur, sans serveur ni générateur externe.
Pour conserver les résultats, copiez-les ou téléchargez-les avant de quitter la page.
Questions fréquentes
Pourquoi les champs commencent-ils par une majuscule ?
encoding/json utilise normalement des champs exportés. La majuscule permet leur accès depuis l’extérieur du package et la bibliothèque standard.
À quoi sert un tag json ?
Il associe un champ de structure à sa clé JSON afin de conserver les clés usuelles malgré le renommage.
Comment null est-il traité ?
Un type connu rencontré avec null peut devenir un pointeur. Si seul null apparaît, un type prudent comme any est utilisé.
Pourquoi utiliser any ?
La cible est Go 1.18+. any, alias d’interface{}, convient lorsque l’échantillon ne permet pas de déterminer le type.
Toutes les clés JSON peuvent-elles devenir des tags valides ?
Pas toujours. La chaîne Go peut être échappée, mais encoding/json interprète notamment virgules et tirets. Ces clés demandent une correspondance personnalisée ; lisez les avertissements générés.