Reunir variantes relevantes
Coloque registros do mesmo formato de resposta em um array. Objetos em propriedades diferentes recebem tipos independentes, mesmo que pareçam iguais.
Geração de tipos
Compare os dois registros de exemplo. O resultado inclui a declaração do pacote e somente os imports necessários.
Análise e geração neste navegador. Os dados não são enviados nem armazenados.
3 declarações · 2 tipos ponteiro
JSON para Go prepara um modelo com base em respostas de API. Junte vários registros em um array para revelar campos ausentes, valores null e mudanças de tipo.
Uma amostra não comprova campos obrigatórios nem regras de negócio. Revise o resultado com o contrato da API e teste a decodificação no projeto.
JSON para Go considera todos os elementos na mesma posição do array. Um campo presente apenas no segundo registro também entra no modelo. Tipos conhecidos com null ou ausência podem receber ponteiros.
Inteiros simples dentro do intervalo int64 usam int64. Decimais, expoentes e inteiros maiores usam json.Number. A inferência não arredonda os valores previamente por meio de números de ponto flutuante do JavaScript.
Coloque registros do mesmo formato de resposta em um array. Objetos em propriedades diferentes recebem tipos independentes, mesmo que pareçam iguais.
Desative datas para preservar o texto original. Desative nomes aninhados para gerar structs anônimos. Sem tags, a associação às chaves originais se perde e precisa ser revisada antes de decodificar.
A geração automática espera 350 ms. Desative-a para exibir Gerar ou use Ctrl/Cmd+Enter. Qualquer edição bloqueia copiar e baixar até que o resultado atual seja gerado com sucesso.
Este conversor JSON transforma snake_case e camelCase em nomes ASCII exportados. Siglas como ID permanecem em maiúsculas; colisões recebem sufixos numéricos estáveis. As tags mantêm as chaves originais compatíveis.
Um escalar ou Go Struct conhecido usa ponteiro quando falta ou recebe null em alguma amostra. Slices e maps já aceitam nil. Um campo somente null usa any; ponteiros não distinguem ausência de null explícito.
Somente tokens inteiros simples no intervalo de 64 bits com sinal usam int64. Até 1.0 e 1e3 viram json.Number, pois encoding/json não decodifica essas formas diretamente em inteiros. Confira erros de conversão antes de fazer cálculos.
Datas completas RFC3339 com calendário válido e até nove dígitos fracionários podem virar time.Time. Todas as strings não null daquela posição precisam atender ao critério. Aliases na raiz conservam os métodos do tipo original.
Sim. O arquivo inclui package, com models como padrão, e apenas os imports necessários. Você pode alterar o pacote antes de gerar. O resultado é código de modelo, sem função main nem lógica de aplicação.
Sim. JSON para Go aceita todos os valores raiz de JSON. Arrays, números, strings, booleanos e null usam aliases; assim os métodos de time.Time e json.Number são mantidos quando esses tipos são inferidos.
São transformados em nomes ASCII exportados, com inicial maiúscula. Siglas conhecidas como ID são preservadas e colisões recebem números. As tags habilitadas mantêm a correspondência com as chaves compatíveis.
Quando há evidência de um escalar ou struct, o padrão é usar ponteiro. Somente null resulta em any; slices e maps já podem ser nil. Um ponteiro não identifica separadamente ausência e null explícito.
Valores incompatíveis na mesma posição produzem any. Todos os elementos são analisados, inclusive os últimos. Para números nessas posições genéricas, configure Decoder.UseNumber() no seu código.
Encontrou um caso de inferência a melhorar?
Use JSON para Go com vários registros, confira ponteiros, números e datas, depois exporte o arquivo para testar no projeto.