JSON en struct Go

Collez du JSON et obtenez des structs Go avec tags json. Les noms de champs suivent les conventions de Go comme ID et URL, les champs optionnels reçoivent omitempty et les valeurs nullables deviennent des pointeurs.

Gratuit et privé. Tout se passe dans votre navigateur, rien n'est envoyé.

Comment ça marche

  1. Collez votre JSONCollez une réponse de votre API ou ouvrez un fichier .json. Cliquez sur Exemple pour voir un cas concret.
  2. Réglez les optionsIndiquez le nom du type principal et les options de ce langage. Le code se met à jour pendant que vous tapez.
  3. Copiez ou téléchargezCopiez le code dans votre projet ou téléchargez-le sous forme de fichier.

Des structs qui se décodent correctement

Chaque champ est exporté, car encoding/json ignore les champs non exportés, et chaque champ porte un tag json avec la clé d'origine. Les sigles courants sont écrits à la manière de Go : user_id devient UserID et image_url devient ImageURL. Les champs absents de certains éléments reçoivent omitempty, ils sont donc de nouveau omis quand vous encodez la struct.

Les valeurs qui peuvent être null deviennent des pointeurs, ce qui permet de distinguer une valeur absente d'une valeur nulle. Si vous préférez des valeurs simples pour les champs optionnels, désactivez l'option des pointeurs. Les horodatages avec fuseau horaire deviennent time.Time, qui lit le texte au format RFC 3339 ; les autres formats de date restent des string, car time.Time échouerait sur eux.

Questions fréquentes

Pourquoi int64 pour certains nombres et int pour d'autres ?

Les entiers qui tiennent sur 32 bits deviennent int. Les valeurs plus grandes, comme les horodatages en millisecondes ou les grands identifiants, deviennent int64 pour ne jamais être tronquées, quelle que soit la plateforme.

Mon JSON est-il envoyé quelque part ?

Non. Les types sont générés dans votre navigateur. Les réponses d'API qui contiennent des données clients ou des clés ne quittent jamais votre appareil.

Comment les champs optionnels sont-ils détectés ?

Si le JSON contient une liste d'objets, chaque objet est comparé aux autres. Un champ absent d'au moins un objet est marqué optionnel. Avec un seul objet, tous les champs sont considérés comme obligatoires.

Que se passe-t-il avec les champs toujours null ?

Leur type ne peut pas être connu à partir de l'exemple, ils reçoivent donc un type général comme unknown, object, Any ou JsonElement. Ajoutez un exemple où le champ a une valeur pour obtenir un type précis.

Pourquoi mon 1.0 est-il typé comme un nombre décimal ?

L'outil regarde comment le nombre est écrit. 1.0 ou 2.5 deviennent double ou float, 1 devient un entier. Si un champ est entier dans certains éléments et décimal dans d'autres, c'est le type décimal qui est utilisé.

Puis-je utiliser le résultat dans du code en production ?

Oui, le code compile tel quel dans les configurations habituelles. Relisez les noms et les types avant de le valider, car un exemple ne montre jamais toutes les valeurs possibles.

Est-ce que ça fonctionne hors ligne ?

Oui. Après une première visite de la page, l'outil continue de fonctionner sans connexion internet.