Cola Go à esquerda e clica em "Converter" — vamos transformar em JSONCola código Go

O que esta ferramenta faz

Você tem um struct Go com tags json:"..." e um composite literal em algum lugar (order := Order{...}), e precisa do JSON que o encoding/json produziria. Cola os dois no editor da esquerda e clica em Converter. A ferramenta lê as tags, aplica as regras de omitempty e -, trata ponteiros nil e entrega um JSON que bate com o que o json.MarshalIndent emitiria — sem precisar fazer ida e volta via go run.

Ela segue a semântica real de marshalling do Go, não substituição ingênua. Os nomes dos campos exportados são renomeados pela primeira parte da tag json. omitempty remove valores zero (string vazia, 0, false, nil, slice/map vazio). Tag - elimina o campo. Campos de structs embutidos (anônimos) são promovidos do mesmo jeito que o encoding/json promove. time.Time sai como string RFC 3339 em formato compatível com RFC 8259, e slices de bytes ([]byte) são codificados em base64.

Os tipos numéricos seguem as regras do Go: float64 mantém a precisão, int/int64 ficam como números, e um ponteiro nil vira null em JSON. Slices viram arrays JSON; um slice nil também vira null (não []), batendo com o comportamento padrão do Marshal. map[string]V vira um objeto JSON. Pode colar vários structs de uma vez — cada instância acaba como uma entrada de topo.

Como usar

Três passos. Vale para um struct pequeno ou um arquivo <code>types.go</code> inteiro.

1

Cola seu Go (ou testa o exemplo)

Joga as definições de struct mais um composite literal (order := Order{...}) no editor da esquerda. Um struct único, vários structs com campos embutidos ou uma declaração no nível do pacote — tudo funciona. Clica em Carregar exemplo para um ponto de partida realista.

Mantém a linha package e os imports — o parser ignora. Tags de struct, receivers de método e comentários não atrapalham. Para referência, a doc do encoding/json.Marshal detalha cada regra que esta ferramenta segue. O repositório fonte do Go vale uma olhada se você bater num caso esquisito.

2

Clica em Converter

Clica no botão verde Converter. A ferramenta parseia as definições do struct, resolve o composite literal, aplica as regras das tags e gera JSON indentado.

3

Copia o JSON

O painel da direita preenche com JSON pronto para uma requisição de API, uma tabela de testes, um arquivo de config ou uma fixture que você carrega com os.ReadFile.

Quando é útil de verdade

Exemplos de request/response de handler HTTP

Você tem um struct de request ou response pra um handler <code>net/http</code> ou <code>gin</code>. Cola com um literal e sai um body JSON pronto pra enviar com curl ou colar no Postman.

Fixtures pra testes table-driven

Converte uma instância de struct de um table test num arquivo JSON independente pra golden-file testing ou ferramentas externas.

CRDs e manifests do Kubernetes

Transforma um struct Go que representa um custom resource ou payload de controller na forma JSON que o <code>kubectl apply</code> ou a API do Kubernetes usa.

Mensagens Kafka / NATS / gRPC-gateway

Serializa um struct de mensagem Go em JSON pra testar producers, payloads de exemplo ou documentação, sem precisar subir o pipeline inteiro.

Perguntas comuns

Ele respeita a tag json do struct?

Sim. O primeiro valor da tag renomeia o campo, omitempty tira valores zero, e - exclui o campo inteiro. Bate com as regras documentadas na referência do encoding/json Marshal.

Como time.Time e []byte são tratados?

time.Time é formatado como RFC 3339 (ex.: "2026-03-14T10:30:00Z"), batendo com time.Time.MarshalJSON. []byte é codificado em base64 como string JSON, que é o padrão da biblioteca padrão.

E ponteiros nil e slices nil?

Um ponteiro nil vira null em JSON. Um slice nil também vira null (não []) — o padrão do Go. Se você quer um array vazio, inicializa o slice com []T{}.

Campos de structs embutidos (anônimos) são promovidos?

Sim. Campos de um struct embutido são achatados no objeto externo, a não ser que o struct embutido tenha sua própria tag json — mesmas regras que o encoding/json aplica.

Posso colar um arquivo inteiro com vários structs?

Pode. Todo tipo de struct que tem uma instância no que você colar acaba como sua própria entrada no JSON. Tipos de struct aninhados são expandidos inline onde são usados.

Meu código fica guardado em algum lugar?

O código é enviado pro backend pra ser convertido, não é persistido nem logado. Como com qualquer ferramenta online, dá uma olhada no código sensível antes de colar.

Outras ferramentas que podem ajudar

Go para JSON é só uma peça do quebra-cabeça. Estas aqui combinam bem: