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.