JSON to Go
Gere structs Go com json tags a partir de uma amostra JSON, prontas para encoding/json.
Entrada JSON
Código gerado
Digite JSON à esquerda para gerar um tipo a partir dele.
O que é JSON to Go?
Um conversor de JSON para Go lê um documento JSON de amostra e gera as definições de struct Go necessárias para decodificá-lo com encoding/json. A biblioteca padrão de Go faz unmarshal para tipos concretos em vez de um map genérico, então consumir qualquer resposta de API nova exige primeiro escrever uma struct cujos campos correspondam ao payload — incluindo uma tag `json:"..."` em cada campo, porque Go exige nomes de campos exportados (capitalizados) enquanto as chaves JSON costumam ser minúsculas ou snake_case. Escrever essas structs à mão é lento e fácil de errar de forma sutil: uma tag digitada errado e o campo silenciosamente permanece no valor zero, sem erro algum — um dos bugs mais comuns ao integrar um novo endpoint. Este gerador produz todo o conjunto de uma vez, dando a cada objeto aninhado sua própria struct nomeada, para que o resultado fique pronto para colar num package.
Como usar JSON to Go
- Cole uma resposta JSON representativa no painel esquerdo — inclua todo campo opcional que importa para você, já que um campo ausente da amostra não aparecerá na struct gerada.
- Defina um nome de tipo raiz na caixa acima da saída (o padrão é "Root"); objetos aninhados são nomeados pela chave que os contém.
- Copie as structs geradas para o seu package e decodifique com json.Unmarshal ou um json.Decoder.
- Precisa de outra linguagem? O seletor acima da saída leva a mesma entrada para Rust, TypeScript, Python e mais cinco opções.
Exemplos
Objeto plano com tags JSON
Entrada
{"id": 1, "name": "Ada", "active": true}
Saída
type Root struct { Id int64 `json:"id"` Name string `json:"name"` Active bool `json:"active"` }
Objeto aninhado se torna sua própria struct
Entrada
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Saída
type User struct { Id int64 `json:"id"` Name string `json:"name"` Roles []string `json:"roles"` } type Root struct { User User `json:"user"` }
Erros comuns
- Editar o nome do campo Go sem atualizar a tag `json:"..."` — o encoding/json então não encontra chave correspondente e o campo silenciosamente permanece no valor zero, em vez de levantar um erro.
- Usar um tipo por valor num campo que pode ser null ou estar ausente, o que torna um campo ausente indistinguível de um legitimamente definido como 0, false ou string vazia.
- Gerar a partir de uma amostra que omite campos opcionais — a struct resultante simplesmente não os terá, então esses valores são descartados na decodificação sem qualquer aviso.
Por que usar esta ferramenta
- Emite as tags de struct `json:"..."` automaticamente, que é onde structs Go escritas à mão mais frequentemente dão errado.
- Dá a cada objeto aninhado sua própria struct nomeada e reutilizável, em vez de enterrá-lo numa definição inline anônima.
- Roda inteiramente no cliente, então respostas reais de API usadas como amostra nunca saem do seu navegador.