JSON naar Go-structs omzetten — Numio
Genereert Go-struct-definities van JSON met behulp van een json-to-go-poort, geformatteerd met gofmt. Sleutels worden geëxporteerd CamelCase-velden met json:"..." tags; geneste objecten worden inline anonieme structuren en nul wordt willekeurig.
Een struct naar json schrijven. Een REST API-antwoord van derden verwijderen.
Wanneer gebruik je dit?
- Een struct naar json schrijven. Een REST API-antwoord van derden verwijderen.
- Opstartverzoek- en antwoordtypen voor een Go HTTP-handler uit voorbeeldpayloads.
Hoe werkt het
- Plak een JSON-object of array in de linkereditor.
- Lees de gegenereerde structuur; het roottype heet altijd AutoGenerated.
- Kopieer het naar uw pakket, hernoem het type en extraheer inline-structuren in benoemde typen als u ze opnieuw gebruikt.
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Go-struct
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}Details en beperkingen
Generatie draait in de browser. Er zijn geen instellingen voor de typenaam, inline versus benoemde structs of tags.
Initialismen worden met hoofdletters geschreven (id wordt ID) en snake_case wordt CamelCase, waarbij de originele sleutel in de json-tag wordt bewaard.
Hele getallen worden int (int64 als ze groot zijn), decimalen zweven64. null, lege arrays en gemengde arrays worden any of []any.
Wanneer objecten in een array verschillen, krijgen sleutels die bij sommige ontbreken, een omzeiling.
FAQ
Kan ik een JSON-array in de root converteren?
Ja. Het produceert het type AutoGenerated []struct{...}, waarbij de velden van alle objecten in de array worden samengevoegd.
Waarom is mijn nulveld getypt?
Een nulwaarde bevat geen type-informatie. Vervang deze door een pointer zoals *string of *time. Tijd om geen ondersteuning te behouden.
Genereert het benoemde geneste structuren?
Nee. Geneste objecten zijn inline anonieme structuren. Verplaats ze handmatig naar benoemde typen als u ernaar moet verwijzen.