Hoppa till innehåll
100% lokalt

JSON till Go-struct

Konvertera ett JSON-exempel till Go-strukturdefinitioner med härledda typer och taggar.

Inmatning
Utmatning

JSON till Go-struct

Klistra in ett JSON-exempel och det här verktyget genererar motsvarande Go-strukturdefinitioner med json-taggar. Det härleder int, float64, string, bool och null för varje fält, skapar namngivna eller inbäddade strukturer för kapslade objekt och bestämmer slice-typer för arrayer — inklusive slices av objekt som har sin egen återanvändbar struktur.

Alternativ formar den genererade koden. Namnge root-strukturen själv eller låt verktyget härleda den. Välj hur taggar skrivs — behål den ursprungliga nyckeln eller konvertera den till snake_case eller camelCase oavsett hur det ursprungliga fältet var namngivet. Aktivera "Lägg till omitempty" för att lägga till det i varje tagg, och "Pekare för valfria fält" för att markera fält som saknas eller är null i delar av exemplet med en pekartyp. När array-objekt har något olika fält, "Sammanfoga arrayelement former" kombinerar dem i en struktur med extra fält markerade som valfria istället för att ge upp på elementtypen. För värden som verktyget inte kan bestämma väljer du interface{}, aliaset any eller json.RawMessage för uppskjuten avkodning.

Detta är steget innan du skriver en API-klient eller config-inläsare i Go: klistra in en verklig svar eller config-exempel och få en initial struktur istället för att manuellt skriva in fältnamn och taggar. Kapslade strukturer kan förbli som separata namngivna typer för återanvändning någon annanstans i paketet, eller återges inbäddade när en form endast används en gång. För fält vars tagg inte längre matchar den ursprungliga JSON-nyckeln är en kommentar med den ursprungliga nyckeln tillgänglig.

Allt körs lokalt i din webbläsare — det JSON du klistrar in, som kan innehålla verkliga API-svar eller intern konfiguration, laddas aldrig upp. Kopiera resultatet, ladda ner det som en .txt-fil eller flytta utmatningen tillbaka till inmatningen för att förfina exemplet och generera om.

FAQ

Hanterar det kapslade objekt och arrayer?
Ja. Kapslade objekt blir sin egen namngivna struktur (eller en inbäddad anonym om du aktiverar den), arrayer blir slices, och en slice av objekt återanvänder en struktur när varje element har samma form.
Vad händer när array-objekt inte alla har samma fält?
Med "Sammanfoga arrayelement former" aktiverad (standard) kombinerar verktyget alla fält det såg bland elementen i en struktur, markerar fält som saknades i vissa element som valfria. Inaktivera detta och verktyget faller tillbaka på en dynamisk elementtyp.
Kan jag kontrollera hur JSON-taggar namnges?
Ja, med alternativet JSON-taggformat: behål den ursprungliga nyckeln precis som den visas i exemplet, eller konvertera varje nyckel till snake_case eller camelCase.
Vilken typ får jag för ett fält som verktyget inte kan härleda?
interface{}, aliaset any eller json.RawMessage, beroende på vilket alternativ du väljer — RawMessage är användbart när du vill avkoda det fältet själv senare.
Laddas min JSON upp någonstans?
Nej. Strukturgenerering körs helt lokalt i din webbläsare — det JSON du klistrar in lämnar aldrig din enhet.