Convertisseur Go vers JSON
Colle un struct Go et un composite literal. Récupère du JSON propre.
Ce que fait cet outil
Tu as un struct Go avec des tags json:"..." et un composite literal quelque part (order := Order{...}), et il te faut la forme JSON que encoding/json produirait. Colle les deux dans l'éditeur de gauche et clique sur Convertir. L'outil lit les tags, applique les règles omitempty et -, gère les pointeurs nil et te renvoie un JSON identique à ce que json.MarshalIndent émettrait — tu évites l'aller-retour par go run.
Il suit la vraie sémantique de marshalling Go, pas de substitution naïve. Les noms de champs exportés sont renommés selon la première partie du tag json. omitempty retire les valeurs zéro (chaîne vide, 0, false, nil, slice/map vide). Un tag - supprime le champ. Les champs de structs embarqués (anonymes) sont promus comme encoding/json le fait. time.Time sort en chaîne RFC 3339 dans un format compatible RFC 8259, et les slices d'octets ([]byte) sont encodés en base64.
Les types numériques suivent les règles de Go : float64 garde sa précision, int/int64 restent des nombres, et un pointeur nil devient null en JSON. Les slices deviennent des tableaux JSON ; un slice nil devient lui aussi null (pas []), ce qui correspond au comportement par défaut de Marshal. map[string]V devient un objet JSON. Colle plusieurs structs d'un coup — chaque instance se retrouve en entrée de premier niveau.
Comment l'utiliser
Trois étapes. Ça marche pour un petit struct comme pour un fichier <code>types.go</code> complet.
Colle ton Go (ou essaie l'exemple)
Balance les définitions de struct plus un composite literal (order := Order{...}) dans l'éditeur de gauche. Un seul struct, plusieurs structs avec champs embarqués, ou une déclaration au niveau du package — tout passe. Clique sur Charger un exemple pour un point de départ concret.
Garde ta ligne package et tes imports — le parser les ignore. Les tags de struct, les receivers de méthodes et les commentaires passent sans souci. Pour référence, la doc encoding/json.Marshal détaille chaque règle que cet outil suit. Le dépôt source de Go vaut un coup d'œil si tu tombes sur un cas limite.
Clique sur Convertir
Clique sur le bouton vert Convertir. L'outil parse les définitions de struct, résout le composite literal, applique les règles de tag et produit du JSON indenté.
Copie le JSON
Le panneau de droite se remplit avec du JSON prêt pour une requête API, une table de tests, un fichier de config ou une fixture que tu charges avec os.ReadFile.
Quand ça sert vraiment
Exemples de requête/réponse de handler HTTP
Tu as un struct de requête ou de réponse pour un handler <code>net/http</code> ou <code>gin</code>. Colle-le avec un literal et obtiens un corps JSON à envoyer avec curl ou à coller dans Postman.
Fixtures pour tests table-driven
Convertis une instance de struct d'un table test en fichier JSON autonome pour du golden-file testing ou un outillage externe.
CRDs et manifests Kubernetes
Transforme un struct Go qui représente une custom resource ou un payload de controller en la forme JSON utilisée par <code>kubectl apply</code> ou l'API Kubernetes.
Messages Kafka / NATS / gRPC-gateway
Sérialise un struct de message Go en JSON pour tester un producer, générer des payloads d'exemple ou documenter, sans monter le pipeline complet.
Questions fréquentes
Est-ce que ça respecte le tag json du struct ?
Oui. La première valeur du tag renomme le champ, omitempty retire les valeurs zéro, et - exclut complètement le champ. Ça colle aux règles de la référence encoding/json Marshal.
Comment sont gérés time.Time et []byte ?
time.Time est formaté en RFC 3339 (p. ex. "2026-03-14T10:30:00Z"), comme time.Time.MarshalJSON. []byte est encodé en base64 sous forme de chaîne JSON — le comportement par défaut de la stdlib.
Et les pointeurs nil et slices nil ?
Un pointeur nil devient null en JSON. Un slice nil devient null lui aussi (pas []) — c'est le défaut en Go. Si tu veux un tableau vide, initialise le slice avec []T{}.
Les champs de structs embarqués (anonymes) sont-ils promus ?
Oui. Les champs d'un struct embarqué sont aplatis dans l'objet extérieur, sauf si le struct embarqué a son propre tag json — mêmes règles que celles appliquées par encoding/json.
Je peux coller un fichier entier avec plusieurs structs ?
Oui. Chaque type de struct qui a une instance dans ce que tu colles finit comme sa propre entrée dans le JSON. Les types de structs imbriqués sont développés inline là où ils sont utilisés.
Est-ce que mon code est stocké quelque part ?
Le code est envoyé au backend pour être converti et n'est ni persisté ni loggué. Comme avec n'importe quel outil en ligne, relis ton code sensible avant de le coller.
Autres outils qui peuvent servir
Go vers JSON n'est qu'une pièce du puzzle. Voici les outils qui vont bien avec :