Skip to content
jsonforge.app

JSON to Go

Générez des structs Go avec tags json depuis un échantillon JSON, prêts pour encoding/json.

Entrée JSON

Loading editor…

Code généré

Saisissez du JSON à gauche pour générer un type à partir de celui-ci.

Qu'est-ce que JSON to Go ?

Un convertisseur JSON vers Go lit un document JSON d'échantillon et génère les définitions de structs Go nécessaires pour le décoder avec encoding/json. La bibliothèque standard de Go démarshalise vers des types concrets plutôt que vers une map générique, donc consommer une nouvelle réponse d'API suppose d'abord d'écrire un struct dont les champs correspondent à la charge utile — y compris un tag `json:"..."` sur chaque champ, car Go exige des noms de champs exportés (capitalisés) tandis que les clés JSON sont habituellement en minuscules ou snake_case. Écrire ces structs à la main est lent et facile à mal faire de façon subtile : un seul tag mal orthographié et le champ reste silencieusement à sa valeur zéro sans aucune erreur, ce qui compte parmi les bugs les plus courants lors de l'intégration d'un nouvel endpoint. Ce générateur produit tout l'ensemble d'un coup, donnant à chaque objet imbriqué son propre struct nommé pour que le résultat soit prêt à coller dans un package.

Comment utiliser JSON to Go

  1. Collez une réponse JSON représentative dans le panneau de gauche — incluez chaque champ optionnel qui vous importe, car un champ absent de l'échantillon n'apparaîtra pas dans le struct généré.
  2. Définissez un nom de type racine dans la zone au-dessus de la sortie (par défaut « Root ») ; les objets imbriqués sont nommés d'après la clé qui les contient.
  3. Copiez les structs générés dans votre package et décodez avec json.Unmarshal ou un json.Decoder.
  4. Besoin d'une autre langue ? Le sélecteur au-dessus de la sortie bascule la même entrée vers Rust, TypeScript, Python et cinq autres.

Exemples

Objet plat avec tags JSON

Entrée

{"id": 1, "name": "Ada", "active": true}

Sortie

type Root struct { Id int64 `json:"id"` Name string `json:"name"` Active bool `json:"active"` }

Un objet imbriqué devient son propre struct

Entrée

{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}

Sortie

type User struct { Id int64 `json:"id"` Name string `json:"name"` Roles []string `json:"roles"` } type Root struct { User User `json:"user"` }

Erreurs courantes

  • Éditer le nom de champ Go sans mettre à jour le tag `json:"..."` — encoding/json ne trouve alors aucune clé correspondante, et le champ reste silencieusement à sa valeur zéro au lieu de lever une erreur.
  • Utiliser un type valeur pour un champ qui peut être null ou manquant, ce qui rend un champ absent indistinguable d'un champ légitimement à 0, false ou la chaîne vide.
  • Générer depuis un échantillon qui omet les champs optionnels — le struct résultant ne les aura simplement pas, donc ces valeurs sont perdues au décodage sans aucun avertissement.

Pourquoi utiliser cet outil

  • Émet automatiquement les tags de struct `json:"..."`, qui est là où les structs Go écrits à la main se trompent le plus souvent.
  • Donne à chaque objet imbriqué son propre struct nommé et réutilisable au lieu de l'enterrer dans une définition inline anonyme.
  • Fonctionne entièrement côté client, donc de vraies réponses d'API utilisées comme échantillons ne quittent jamais votre navigateur.

Questions fréquentes