UTILS.
100% in de browser
🐹

JSON naar Go-struct

Zet een JSON-voorbeeld om naar getypeerde Go-structs met json-tags. Leidt int64, float64, bool, geneste structs en slices af in je browser.

uitvoer

Over deze tool

Plak een JSON-voorbeeld en deze tool genereert kant-en-klare Go-structs, compleet met `json:"field"`-tags voor elke sleutel. Alles draait lokaal in je browser, dus je JSON wordt nergens naartoe geüpload.

De generator roept JSON.parse aan en doorloopt het resultaat recursief: strings worden string, booleans worden bool, hele getallen worden int64 en getallen met een decimaal worden float64, null wordt interface{}, arrays worden een slice van het type van het eerste element ([]interface{} wanneer leeg), en elk object wordt zijn eigen benoemde geneste struct. Veldnamen worden omgezet naar geëxporteerde PascalCase (met gangbare afkortingen als ID en URL in hoofdletters) terwijl de oorspronkelijke sleutel in de json-tag behouden blijft.

Gebruik het om Go-modellen op te zetten vanuit een API-respons of configuratiebestand, en werk de types daarna waar nodig met de hand bij. Omdat JSON geen apart integer-type heeft, wordt een waarde als 1.0 als een integer gelezen; voeg een decimaal (1.5) toe als je float64 wilt.

Veelgestelde vragen

Hoe worden getallen getypeerd?
Een geparseerde waarde zonder decimaal deel wordt int64; een waarde met een decimaal wordt float64. JSON kan 1 niet onderscheiden van 1.0, dus beide worden als int64 gelezen.
Wat gebeurt er met geneste objecten en arrays?
Elk object wordt een aparte benoemde struct; arrays worden een slice van het type van het eerste element, of []interface{} als de array leeg is of het element null is.
Zijn de veldnamen geldig Go?
Sleutels worden omgezet naar geëxporteerde PascalCase en de oorspronkelijke sleutel wordt in een json-tag bewaard, zodat JSON correct heen en weer converteert, zelfs voor namen als user_id of first-name.
Wordt mijn JSON naar een server verstuurd?
Nee. Parsen en codegeneratie gebeuren volledig in je browser; er wordt niets geüpload of opgeslagen.

Meer tools