JSON para Go Struct

Gratuito DevTools

JSON para Go Struct

Gere structs Go automaticamente a partir do seu JSON. Suporta objetos aninhados, arrays, tags json, omitempty e tipos ponteiro. 100% no navegador, sem cadastro.

3.8k usuarios Atualizado em Mar 2026 4.7/5
Avalie esta ferramenta:
4.7 (618 votos) Obrigado!
Conversor JSON para Go Struct
Cole seu JSON no painel esquerdo

Como Usar

Converta qualquer JSON em um struct Go pronto para usar.

1
Cole o JSON
Insira o JSON no painel de entrada. Com "Converter automaticamente" ativo, o resultado aparece em tempo real.
2
Configure as opcoes
Defina o nome da struct, ative tags json, omitempty ou ponteiros conforme necessario.
3
Revise o resultado
O painel direito mostra o struct Go gerado com alinhamento automatico dos campos.
4
Copie ou baixe
Use Copiar ou Download .go para integrar ao seu projeto Go.

Mapeamento de tipos JSON para Go

O conversor detecta automaticamente os tipos e gera o codigo Go correto:

stringstring
number (inteiro)int64
number (decimal)float64
booleanbool
nullinterface{}
objectstruct aninhado
array de objetos[]NomeStruct
array de primitivos[]tipo

Conversao de nomes de campos: chaves em camelCase, snake_case ou qualquer formato sao convertidas para PascalCase conforme a convencao Go.

Tags json: quando ativadas, cada campo recebe a tag `json:"nome_original"` preservando a chave exata do JSON original.

Ponteiros: ao ativar a opcao de ponteiros, os campos sao gerados como *tipo, permitindo distinguir entre valor zero e campo ausente.

JSON para Go: Structs, Tags e Como Modelar Dados de APIs em Golang

Neste artigo
  1. Como o Go lida com JSON
  2. Structs e tags em Go
  3. Mapeamento de tipos JSON para Go
  4. omitempty e ponteiros
  5. Structs aninhados e arrays
  6. Perguntas frequentes

1. Como o Go Lida com JSON

Go possui suporte nativo a JSON por meio do pacote encoding/json da biblioteca padrao. A serializacao e desserializacao (marshaling e unmarshaling) ocorrem entre structs Go e strings JSON de forma automatica, usando tags de struct para controlar o mapeamento de campos.

Definir um struct correto para cada resposta de API e a base do desenvolvimento Go idiomatico. A ferramenta nesta pagina automatiza essa tarefa — o que levaria minutos manualmente e feito em segundos.

2. Structs e Tags em Go

Em Go, structs sao tipos compostos que agrupam campos nomeados. Para controlar a serializacao JSON, cada campo pode receber uma tag `json:"nome_do_campo"` que define o nome usado no JSON, independentemente do nome do campo Go.

  • Campos exportados (iniciando com letra maiuscula) sao incluidos na serializacao por padrao.
  • Campos nao exportados (letra minuscula) sao ignorados pelo encoding/json.
  • A tag json:"-" exclui um campo da serializacao mesmo que seja exportado.

3. Mapeamento de Tipos JSON para Go

O conversor aplica as seguintes correspondencias de tipo: strings JSON tornam-se string, numeros inteiros tornam-se int64, numeros decimais tornam-se float64, booleanos tornam-se bool, valores null tornam-se interface{}, objetos geram structs aninhados e arrays geram slices tipadas.

"Usar structs fortemente tipados em vez de map[string]interface{} e sempre a abordagem recomendada em producao — garante seguranca de tipos, melhor performance e codigo mais legivel."

4. omitempty e Ponteiros

A opcao omitempty instrui o encoder a omitir o campo da saida JSON quando ele tiver o valor zero do seu tipo (0, "", false, nil). E util para objetos de requisicao onde campos opcionais nao devem aparecer como null ou zero.

Ponteiros (*tipo) permitem distinguir entre um campo com valor zero e um campo ausente — quando o ponteiro e nil, o campo foi omitido; quando aponta para um valor, mesmo que seja zero, o campo esta presente.

5. Structs Aninhados e Arrays

Quando o JSON contem objetos aninhados, o conversor gera structs separados para cada nivel. Arrays de objetos geram um slice do tipo struct correspondente, mesclando todos os elementos do array para capturar todos os campos possiveis.

O conversor ordena os structs de forma que os tipos pai aparecam primeiro, seguidos dos tipos filho — a ordem correta para compilacao e leitura humana.

6. Perguntas Frequentes

O arquivo baixado ja inclui o package?

Sim. O arquivo .go baixado inclui a declaracao package main no topo, facilitando a integracao direta. Voce pode alterar para o pacote correto do seu projeto.

O conversor suporta JSON com array na raiz?

Sim. Se o JSON for um array de objetos, o conversor mescla todos os elementos para inferir os campos, gera o struct do elemento e cria um type alias para a slice raiz.

Os dados sao enviados a algum servidor?

Nao. Toda a conversao ocorre localmente no navegador via JavaScript. Nenhum dado e transmitido ou armazenado.

Como o conversor lida com chaves em snake_case ou camelCase?

Todas as chaves sao convertidas para PascalCase conforme a convencao Go. A tag json preserva o nome original da chave, garantindo compatibilidade com a API sem perder a convencao de nomenclatura Go.