Transforme uma amostra de JSON em structs Go com tags json, int ou float64, ponteiros e omitempty
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum. Verificado em 16 de outubro de 2026.Cole uma amostra de JSON e receba tipos struct do Go com tags json, prontos para json.Unmarshal. Números inteiros viram int, int64 acima de 2.147.483.647, e qualquer decimal deixa o campo como float64; um valor que às vezes é null vira ponteiro, e chaves ausentes em alguns objetos ganham omitempty.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Cole uma amostra de JSON, como a resposta de uma API, na caixa da esquerda.
Os tipos Go aparecem enquanto você digita: uma struct por objeto, com tags json e nomes no estilo Go como UserID.
Escolha Structs aninhadas inline ou omitempty em todo campo se quiser, e defina o nome do tipo raiz.
Clique em Copiar, ou em Baixar para salvar um arquivo .go, e acrescente sua linha package.
O Go decodifica JSON em structs, e cada campo precisa do tipo certo e de uma tag json:"..." com o nome da chave. Este conversor escreve esses tipos a partir de uma amostra, então uma resposta de API de 200 linhas vira Go correto com uma só colagem.
Como os tipos são escolhidos.
| Valor JSON | Tipo Go |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (só números inteiros) | int, ou int64 além de 32 bits |
| 4.5 (algum decimal visto) | float64 |
| null, e também um tipo | um ponteiro, como *string |
| só null, ou tipos misturados | any |
| [ ... ] | um slice, como []string |
| { ... } | uma struct nomeada, ou inline |
Arrays de objetos. Todos os objetos de um array são unidos em uma struct, então um campo que aparece só em alguns continua lá, com ,omitempty na tag. Dois objetos com exatamente as mesmas chaves e tipos compartilham um nome de tipo.
Nomes. As chaves viram nomes Go exportados no estilo Go: user_id vira UserID, avatar_url vira AvatarURL, pela lista de siglas do golint. Uma chave que começa com dígito ganha um N na frente; duas chaves que gerariam o mesmo nome são numeradas. Uma chave com caracteres que uma tag não aceita, como vírgula, é marcada com um comentário, porque o encoding/json não a encontraria.
Opções. Structs aninhadas inline escreve um único tipo com structs anônimas dentro, o que serve para uma resposta pontual. omitempty em todo campo serve para structs que você também serializa. O tipo raiz se chama Root, a menos que você dê outro nome.
Cada resultado foi verificado lendo o Go de volta e decodificando a amostra com as regras do encoding/json. Nada do que você cola sai do navegador.
Cole uma amostra de JSON no conversor e a struct Go aparece ao lado, com uma tag json em cada campo e os objetos aninhados como tipos próprios. Copie para o seu pacote e decodifique com json.Unmarshal(data, &v), onde v é uma variável do tipo raiz.
Use int quando todo valor da amostra for inteiro e float64 quando algum valor tiver parte decimal, porque o encoding/json se recusa a colocar 4.5 em um int. O conversor escolhe por campo e usa int64 quando um número inteiro passa de 2.147.483.647.
Um campo visto tanto como null quanto com valor vira ponteiro, como *string, então nil significa null e uma string vazia continua diferente. Um campo que só apareceu como null vira any, já que a amostra não diz o que ele guardaria de outra forma.
Com omitempty, o json.Marshal deixa o campo de fora quando ele tem o valor zero: string vazia, 0, false, nil ou slice vazio. O conversor o adiciona às chaves ausentes em alguns objetos de um array, e uma chave liga o recurso em todos os campos.
O estilo Go, conferido pelo golint e pela maioria dos linters, escreve siglas em maiúsculas: ID, URL, HTTP, API, JSON e umas quarenta outras. A tag json mantém a chave original, user_id ou userId, então a decodificação continua batendo exatamente com a API.
Não. A conversão roda no seu navegador sem nenhuma requisição a um servidor, e o JSON não é guardado, então respostas de API com tokens ou dados pessoais ficam no seu dispositivo. Feche a aba e nada fica para trás.
Taxas e regras mudam; confira a fonte antes de confiar em um valor.
Ainda com dúvidas? Pergunte sobre Conversor de JSON para structs Go e qualquer pessoa que saiba pode responder. Não é preciso ter conta.