DevToolPal
NL

JSON naar Go struct

Genereer Go-structs met json-tags uit een JSON-voorbeeld, met benoemde of inline geneste structs en omitempty.

Draait lokaal, wordt nooit geüpload

Opties

Geneste objecten

JSON

0 tekens · 0 B

Go

0 tekens · 0 B

Wat het doet

De JSON naar Go converter leest een JSON-voorbeeld en schrijft Go-structdefinities met json-tags, klaar voor encoding/json. Plak een antwoord van de API die je aanroept en krijg types die je direct met json.Unmarshal kunt gebruiken, zonder elk veld en elke tag met de hand te schrijven.

De converter bekijkt elke waarde in het voorbeeld. Geneste objecten worden eigen structs, alle items van een array worden samengevoegd tot één elementtype, en velden die in sommige items ontbreken of soms null zijn worden als optioneel herkend. De uitvoer is uitgelijnd zoals gofmt dat zou doen.

Zo gebruik je het

  1. Plak JSON in het invoerveld, upload een .json-bestand of klik op Voorbeeld.
  2. Stel de naam van het roottype in en kies hoe geneste objecten worden geschreven, welke velden omitempty krijgen en of nullable velden pointers gebruiken.
  3. Kopieer de Go-code of download hem als .go-bestand en voeg je package-regel toe.

Ongeldige JSON wordt gemeld met de regel en kolom van het probleem.

Voorbeeld

Deze JSON:

{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }

wordt deze structs:

type Root struct {
	ID       int      `json:"id"`
	UserName string   `json:"user_name"`
	Tags     []string `json:"tags"`
	Profile  Profile  `json:"profile"`
}

type Profile struct {
	AvatarURL string `json:"avatar_url"`
}

Tips

  • Eén voorbeeld laat alleen zien wat erin staat. Kan een waarde een getal of een string zijn, neem dan beide op of zet meerdere voorbeelden in een array zodat ze worden samengevoegd.
  • Tijdstempels komen binnen als strings. Verander het type zelf in time.Time als het formaat RFC 3339 is.
  • Objecten met precies dezelfde velden delen één struct, waardoor de uitvoer kort blijft als dezelfde vorm op meerdere plekken voorkomt.
  • Schrijf je ook TypeScript? De JSON naar TypeScript generator gebruikt dezelfde afleiding voor interfaces.

Veelgestelde vragen

› Hoe worden de veldnamen gekozen?

Elke JSON-sleutel wordt een geëxporteerde Go-naam in PascalCase, met gangbare afkortingen in hoofdletters zoals golint verwacht, dus user_id wordt UserID en avatar_url wordt AvatarURL. De oorspronkelijke sleutel blijft in de json-tag staan, zodat encoding/json de velden precies koppelt.

› Welke Go-types worden gebruikt?

Strings worden string, gehele getallen int (of int64 als een waarde niet in 32 bits past), decimalen float64 en booleans bool. Arrays worden slices, lege objecten map[string]any, en waarden die alleen null zijn of meerdere soorten mengen worden any.

› Wat is het verschil tussen benoemde en inline structs?

De benoemde modus schrijft elk genest object als een eigen type, zoals Address of Order, wat hergebruik en testen makkelijker maakt. De inline modus zet anonieme struct-types direct in de ouder en houdt alles in één declaratie, zoals veel snelle converters doen.

› Wanneer wordt omitempty toegevoegd?

Standaard alleen bij optionele velden, dus velden die in sommige objecten van een array ontbreken of soms null zijn. Je kunt het ook aan alle velden of aan geen enkel veld toevoegen. Zet pointers aan om een ontbrekende of null-waarde te onderscheiden van een nulwaarde.

› Wordt mijn JSON geüpload?

Nee. De structs worden in je browser gemaakt en er wordt niets naar een server gestuurd.