Générateur d'exemple JSON depuis un struct Go
Collez une définition de struct Go avec des tags json pour générer automatiquement des données JSON d'exemple correspondantes. Prend en charge les structs imbriqués, les slices, omitempty et json:"-", pratique pour les mocks d'API et les exemples Postman.
Produire un JSON d'exemple à partir d'une structure Go
Lorsque vous montez un simulacre d'API ou déposez un exemple de réponse dans Postman, vous finissez par écrire à la main quel JSON une définition de structure produira réellement. Cet outil engendre cette forme sous les traits d'un JSON d'exemple à partir de la seule définition de structure Go que vous collez, en prenant en compte aussi bien les structures imbriquées, les tranches, `omitempty` que `json:"-"`.
**Ce qui importe ici, c'est qu'un nom de champ Go ne devient pas nécessairement la clé du JSON.** La balise json l'emporte là où elle figure, et un champ marqué `json:"-"` n'apparaît pas du tout. Comme `omitempty` écarte un champ dont la valeur est la valeur nulle du type, **la liste même des clés peut différer entre deux encodages de la même structure.** Lire la définition à l'œil invite donc à se tromper sur la forme réelle du JSON, et la déplier mécaniquement est précisément la tâche de cet outil. Les valeurs produites ne sont que représentatives de chaque type : remplacez-les par des données qui aient du sens avant d'exploiter la sortie.
Comment s'en servir
- Collez les définitions de structure Plusieurs structures apparentées peuvent être collées ensemble sans difficulté.
- Désignez la structure voulue **Précisez-la lorsqu'il y en a plusieurs. Si vous laissez le champ vide, la première est retenue.**
- Parcourez le JSON produit Les structures imbriquées et les tranches ressortent entièrement dépliées.
- Mettez vos propres valeurs Des valeurs représentatives y figurent : remplacez-les par des données conformes à votre usage.
Astuces pour en tirer le meilleur parti
- Collez plusieurs structs ensemble : les types des champs imbriqués sont résolus automatiquement et des objets d'exemple sont générés de manière récursive (si une définition est introuvable, un objet vide {} est utilisé et un avertissement s'affiche).
- Indiquez un nom de struct cible pour choisir lequel devient la racine lorsque votre entrée en contient plusieurs (le premier struct rencontré est utilisé si le champ est laissé vide).
- Les champs marqués json:"-" sont exclus de la sortie JSON. Les champs avec omitempty voient tout de même leur clé émise normalement ; supprimez-la manuellement si vous n'en avez pas besoin.
- Les valeurs générées ne sont que des marqueurs de type (les chaînes deviennent "example", les nombres deviennent 1, etc.). Remplacez-les par des données réelles si vous avez besoin d'un véritable exemple de réponse d'API.
- Cet outil est l'inverse de son outil jumeau, le convertisseur JSON vers struct Go. Il permet de transformer rapidement un struct défini dans un handler Go en une charge utile d'exemple pour votre équipe frontend ou QA.
Dans quels cas s'en servir
Pour monter un simulacre d'API
**Arrêter l'exemple de réponse avant d'écrire le serveur évite que le travail d'interface n'ait à patienter.**
Pour insérer des exemples dans la documentation
Il fournit la matière à coller dans un exemple Postman ou un échantillon OpenAPI.
Pour vérifier l'effet d'une balise
Vous voyez sous forme concrète ce que `omitempty` ou `json:"-"` produisent réellement.
Pour convenir d'une forme avec l'interface
Montrer un JSON concret laisse moins de place au malentendu que de remettre une définition de types.
Vocabulaire de l'encodage en Go
- Balise json
- L'annotation jointe à un champ sous la forme `json:"user_id"`, qui **nomme la clé du côté JSON.** À défaut, le nom du champ est repris tel quel.
- Omitempty
- Un réglage qui **retire entièrement la clé de la sortie lorsque la valeur est la valeur nulle du type.** Notez qu'un 0 ou une chaîne vide disparaissent avec le reste.
- Json:"-"
- Un réglage qui tient le champ hors du JSON. Il sert à masquer les champs à usage interne.
- Valeur nulle du type
- La valeur initiale fixée pour chaque type : 0 pour les nombres, vide pour les chaînes, nil pour les pointeurs et les tranches.
- Tranche
- Une suite de longueur variable, qui devient un tableau en JSON. **Une tranche nil s'écrit `null`, ce qui la distingue d'un tableau vide.**
- Champ incorporé
- La notation qui intègre une autre structure en n'écrivant que son nom de type. En JSON, ses champs se placent au même niveau que les clés du parent.
Questions fréquentes
Anecdote — l'inverse de la conversion JSON vers struct Go
Lors de la construction d'une API web en Go, la forme de la réponse est généralement définie en combinant un struct avec des tags json. Mais lorsqu'un développeur frontend ou un ingénieur QA veut vérifier le comportement de l'API, lire le code Go et convertir mentalement chaque type de champ en JSON est une tâche fastidieuse et source d'erreurs.
Cet outil effectue exactement l'opération inverse de son outil jumeau, le « Convertisseur JSON vers struct Go ». Collez une définition de struct Go, et il génère une charge utile JSON d'exemple avec des noms de clés suivant les tags json et des valeurs de substitution correspondant au type de chaque champ, prête à être utilisée directement dans un exemple Postman ou un mock frontend.
Cela dit, il ne s'agit pas d'un véritable compilateur Go, mais d'un analyseur léger construit sur des expressions régulières et une analyse ligne par ligne. Il gère les définitions de champs simples ainsi que les structs imbriqués collés ensemble dans la même entrée, mais des notations complexes comme les structs anonymes imbriqués ou les déclarations de type sur plusieurs lignes peuvent ne pas être analysées correctement. Considérez-le comme un premier brouillon et vérifiez la forme finale avec le code source Go réel.