Convertitore Go a JSON
Incolla uno struct Go più un composite literal. Ti esce JSON pulito.
Cosa fa questo tool
Hai uno struct Go con tag json:"..." e un composite literal da qualche parte (order := Order{...}), e ti serve la forma JSON che encoding/json produrrebbe. Incolla entrambi nell'editor di sinistra e premi Converti. Il tool legge le tag, applica le regole di omitempty e -, gestisce i puntatori nil e ti restituisce JSON identico a quello che emetterebbe json.MarshalIndent — ti risparmi il giro con go run.
Segue la vera semantica di marshalling di Go, niente sostituzioni banali. I nomi dei campi esportati vengono rinominati dalla prima parte della tag json. omitempty elimina i valori zero (stringa vuota, 0, false, nil, slice/map vuoti). Una tag - rimuove il campo. I campi di struct embedded (anonimi) vengono promossi come fa encoding/json. time.Time esce come stringa RFC 3339 in formato compatibile con RFC 8259, e gli slice di byte ([]byte) sono codificati in base64.
I tipi numerici seguono le regole di Go: float64 mantiene la precisione, int/int64 restano numeri, e un puntatore nil diventa null JSON. Gli slice diventano array JSON; uno slice nil diventa anch'esso null (non []), come da comportamento di default di Marshal. map[string]V diventa un oggetto JSON. Incolla più struct insieme — ogni istanza finisce come entry di primo livello.
Come usarlo
Tre passaggi. Vale per uno struct mini o per un intero <code>types.go</code>.
Incolla il tuo Go (o prova l'esempio)
Butta dentro le definizioni degli struct più un composite literal (order := Order{...}) nell'editor di sinistra. Un singolo struct, più struct con campi embedded, o una dichiarazione a livello package — va bene tutto. Clicca Carica esempio per un punto di partenza realistico.
Tieni pure la riga package e gli import — il parser li ignora. Tag degli struct, method receiver e commenti non danno problemi. Come riferimento, la doc di encoding/json.Marshal elenca ogni regola che questo tool segue. Se becchi un caso limite, vale la pena dare un'occhiata al repo sorgente di Go.
Premi Converti
Clicca il pulsante verde Converti. Il tool parsa le definizioni degli struct, risolve il composite literal, applica le regole delle tag e produce JSON indentato.
Copia il JSON
Il pannello di destra si riempie con JSON pronto per una richiesta API, una tabella di test, un file di config o una fixture che carichi con os.ReadFile.
Quando serve davvero
Sample di request/response per handler HTTP
Hai uno struct di request o response per un handler <code>net/http</code> o <code>gin</code>. Lo incolli con un literal e ottieni un body JSON da spedire con curl o da incollare su Postman.
Fixture per test table-driven
Converte un'istanza di struct da un table test in un file JSON autonomo per golden-file testing o tooling esterno.
CRD e manifest Kubernetes
Trasforma uno struct Go che rappresenta una custom resource o un payload di controller nella forma JSON usata da <code>kubectl apply</code> o dall'API Kubernetes.
Messaggi Kafka / NATS / gRPC-gateway
Serializza uno struct di messaggio Go in JSON per test dei producer, payload di esempio o documentazione, senza tirare su l'intera pipeline.
Domande frequenti
Rispetta la tag json dello struct?
Sì. Il primo valore della tag rinomina il campo, omitempty elimina i valori zero, e - esclude del tutto il campo. Corrisponde alle regole documentate nel reference di encoding/json Marshal.
Come vengono gestiti time.Time e []byte?
time.Time è formattato come RFC 3339 (es. "2026-03-14T10:30:00Z"), come fa time.Time.MarshalJSON. []byte viene codificato in base64 come stringa JSON, che è quello che fa la libreria standard di default.
E i puntatori nil e gli slice nil?
Un puntatore nil diventa null JSON. Uno slice nil diventa anch'esso null (non []) — è il default di Go. Se vuoi un array vuoto, inizializza lo slice con []T{}.
I campi degli struct embedded (anonimi) vengono promossi?
Sì. I campi di uno struct embedded vengono appiattiti nell'oggetto esterno, a meno che lo struct embedded non abbia una sua tag json — stesse regole che applica encoding/json.
Posso incollare un intero file con più struct?
Certo. Ogni tipo struct che ha un'istanza in ciò che incolli finisce come entry a sé nel JSON. I tipi struct annidati vengono espansi inline nei punti in cui sono usati.
Il mio codice viene salvato da qualche parte?
Il codice viene inviato al backend per la conversione e non è né persistito né loggato. Come con qualunque tool online, dai un'occhiata al codice sensibile prima di incollarlo.
Altri tool che potrebbero servirti
Go a JSON è un pezzo del puzzle. Questi si abbinano bene: