Incolla il Go a sinistra e clicca "Converti" — lo trasformiamo in JSONIncolla codice Go

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>.

1

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.

2

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.

3

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: