Você está sem internet. As ferramentas que você já abriu continuam funcionando.
JSON para struct Go
Cole um JSON e receba structs Go com json tags. Os nomes dos campos seguem as convenções do Go, como ID e URL, campos opcionais ganham omitempty e valores anuláveis viram ponteiros.
Grátis e privado. Tudo funciona no seu navegador e nada é enviado.
Relatar um problema
Como funciona
Cole o seu JSONCole uma resposta da sua API ou abra um arquivo .json. Use Exemplo para ver como funciona.
Ajuste as opçõesDefina o nome do tipo principal e as opções desta linguagem. O código se atualiza enquanto você digita.
Copie ou baixeCopie o código para o seu projeto ou baixe como arquivo.
Structs que fazem unmarshal corretamente
Todos os campos são exportados, porque o encoding/json ignora campos não exportados, e cada campo leva uma json tag com a chave original. Siglas comuns são escritas do jeito do Go, então user_id vira UserID e image_url vira ImageURL. Campos que faltam em alguns itens ganham omitempty, então ficam de fora de novo quando você faz marshal da struct.
Valores que podem ser null viram ponteiros, o que permite distinguir um valor ausente de um valor zero. Se preferir valores simples para campos opcionais, desative a opção de ponteiros. Datas e horas com fuso horário viram time.Time, que lê texto RFC 3339; outros formatos de data continuam string, porque time.Time falharia com eles.
Perguntas frequentes
Por que int64 para alguns números e int para outros?
Inteiros que cabem em 32 bits viram int. Valores maiores, como timestamps em milissegundos ou IDs grandes, viram int64 para nunca serem cortados em nenhuma plataforma.
Meu JSON é enviado para algum lugar?
Não. Os tipos são gerados no seu navegador. Respostas de API com dados de clientes ou chaves nunca saem do seu dispositivo.
Como os campos opcionais são detectados?
Se o JSON tem uma lista de objetos, todos os objetos são comparados. Um campo que falta em pelo menos um objeto é marcado como opcional. Com um único objeto, todos os campos são tratados como obrigatórios.
O que acontece com campos que são sempre null?
Não dá para saber o tipo pelo exemplo, então o campo recebe um tipo genérico como unknown, object, Any ou JsonElement. Inclua um exemplo em que o campo tenha valor para obter um tipo preciso.
Por que o meu 1.0 virou número decimal?
A ferramenta olha como o número está escrito. 1.0 ou 2.5 viram double ou float, 1 vira inteiro. Se um campo é inteiro em alguns itens e decimal em outros, o tipo decimal é usado.
Posso usar o resultado em código de produção?
Sim, o código compila como está nas configurações mais comuns. Revise nomes e tipos antes do commit, porque um exemplo nunca mostra todos os valores possíveis.
Funciona sem internet?
Sim. Depois que você abre a página uma vez, ela continua funcionando sem conexão com a internet.
Solte o arquivo para ver o que dá para fazer com ele