Ir para o conteúdo

JSON para Estrutura Go

Converta uma amostra JSON em definições de estrutura Go com tipos e tags deduzidos.

Entrada
Saída

JSON para Estrutura Go

Cole uma amostra JSON e esta ferramenta gerará as definições de estrutura Go correspondentes com tags json. Deduz int, float64, string, bool e null para cada campo, cria estruturas nomeadas ou incorporadas para objetos aninhados, e determina tipos de fatia para matrizes — incluindo fatias de objetos que têm sua própria estrutura reutilizável.

As opções moldam o código gerado. Nomeie a estrutura raiz você mesmo ou deixe a ferramenta deduzi-la. Escolha como as tags são escritas — mantenha a chave original ou converta-a para snake_case ou camelCase, independentemente de como o campo original foi nomeado. Ative "Adicionar omitempty" para adicioná-lo a cada tag, e "Ponteiros para campos opcionais" para marcar campos que faltam ou são nulos em partes da amostra com um tipo de ponteiro. Quando os objetos da matriz têm campos um pouco diferentes, "Mesclar formas de elementos de matriz" os combina em uma estrutura com campos adicionais marcados como opcionais em vez de desistir do tipo de elemento. Para valores que a ferramenta não consegue determinar, escolha interface{}, o alias any ou json.RawMessage para decodificação diferida.

Esta é a etapa antes de escrever um cliente API ou carregador de configuração em Go: cole uma resposta real ou amostra de configuração e obtenha uma estrutura inicial em vez de digitar manualmente nomes de campos e tags. As estruturas aninhadas podem permanecer como tipos nomeados separados para reutilização em outro lugar no pacote, ou serem renderizadas em linha quando uma forma é usada apenas uma vez. Para campos cuja tag não corresponde mais à chave JSON original, está disponível um comentário com a chave original.

Tudo é executado localmente no seu navegador — o JSON que você cola, que pode incluir respostas reais de API ou configuração interna, nunca é carregado. Copie o resultado, baixe-o como arquivo .txt ou mova a saída de volta para a entrada para refinar a amostra e regenerar.

FAQ

Ele lida com objetos e matrizes aninhados?
Sim. Os objetos aninhados se tornam sua própria estrutura nomeada (ou uma incorporada anônima se você ativá-la), as matrizes se tornam fatias, e uma fatia de objetos reutiliza uma estrutura quando cada elemento tem a mesma forma.
O que acontece quando os objetos da matriz não têm todos os mesmos campos?
Com "Mesclar formas de elementos de matriz" ativado (padrão), a ferramenta combina todos os campos que viu nos elementos em uma estrutura, marcando os campos que faltavam em alguns elementos como opcionais. Desative-o e a ferramenta volta a um tipo de elemento dinâmico.
Posso controlar como as tags JSON são nomeadas?
Sim, com a opção de formato de tag JSON: mantenha a chave original exatamente como aparece na amostra, ou converta cada chave para snake_case ou camelCase.
Que tipo obtenho para um campo que a ferramenta não consegue deduzir?
interface{}, o alias any ou json.RawMessage, dependendo da opção que você escolher — RawMessage é útil quando você deseja decodificar esse campo você mesmo mais tarde.
Meu JSON é carregado em algum lugar?
Não. A geração de estrutura é executada completamente no seu navegador — o JSON que você cola nunca sai do seu dispositivo.