Convertisseur JSON vers Struct Go
Collez un objet JSON (ou un tableau JSON) pour générer automatiquement les définitions de struct Go correspondantes avec leurs balises json.
Astuces d'utilisation
- Lorsque tous les éléments d'un tableau sont des objets, leurs clés sont fusionnées en une seule struct. Les clés absentes de certains éléments reçoivent automatiquement la balise json `omitempty`.
- Le nom du type racine est "Root" par défaut, mais vous pouvez le renommer comme vous le souhaitez. Les noms de struct pour les objets imbriqués sont générés automatiquement en convertissant le nom de la propriété en PascalCase.
- La valeur null de JSON est générée sous forme de `interface{}`, car Go n'a pas de type primitif natif acceptant null. Envisagez un type pointeur si vous avez besoin d'un traitement plus strict.
- Le résultat est un brouillon aux colonnes légèrement alignées. Le passer dans `gofmt` après collage l'alignera sur le style standard de votre projet.
- Collez telle quelle une réponse JSON d'exemple de votre API pour obtenir rapidement une ébauche de la struct de réponse utilisée dans votre code Go.
Questions fréquentes
Anecdote — pourquoi Go associe structs et balises json
Go est un langage à typage statique, et lorsqu'il manipule du JSON, le paquet `encoding/json` de la bibliothèque standard s'appuie sur la correspondance entre les champs d'une struct et leurs balises json pour encoder et décoder les données. Écrire à la main une struct pour la forme de réponse d'une API externe est une tâche répétitive qui s'alourdit à chaque champ ajouté, et elle revient sans cesse dans de nombreux projets Go.
Cet outil analyse la structure d'un JSON d'exemple et génère automatiquement les définitions de struct et les balises json correspondantes, réduisant ainsi ce travail répétitif. Un outil connu dans le même domaine est quicktype, qui prend en charge la conversion vers des types de plusieurs langages ; mais pour le cas plus simple où l'on veut coller une réponse d'API d'exemple et obtenir rapidement une struct Go, un outil dédié à cette seule tâche a aussi son propre confort.
Comme Go ne dispose d'aucune fonctionnalité de langage pour rendre un champ de struct optionnel, l'approche courante pour les champs JSON susceptibles d'être absents consiste à ajouter `omitempty` à la balise json, ou à utiliser un type pointeur (comme `*string`) pour distinguer une valeur zéro de "aucune valeur". La struct générée n'est qu'une déduction mécanique à partir de la structure : il est donc d'usage de vérifier et d'ajuster manuellement la question du nullable et des évolutions futures de l'API par rapport à la spécification réelle.