Desenvolvedor / JSON
JSON para Struct Go
Cole um exemplo JSON e obtenha definições de structs Go com nomes de campos exportados, as siglas esperadas pelos linters do Go e tags json, prontas para colar no seu código.
JSON para Struct Go: O conversor lê o JSON no seu navegador e cria uma struct para cada objeto. As chaves se tornam nomes exportados em CamelCase, com siglas como ID, URL e HTTP em letras maiúsculas, conforme recomenda o golint, e cada campo mantém sua chave original em uma tag json, formatada como o gofmt faria. Objetos dentro de um array são combinados: uma chave ausente em alguns deles recebe omitempty, e uma chave que às vezes é null se torna um ponteiro. Números inteiros se tornam int64, a menos que apareça um decimal no mesmo campo; nesse caso, o tipo será float64. Roda 100% localmente no seu navegador, sem enviar nenhum arquivo para o servidor.
- Categoria
- Ferramentas para desenvolvedores
- Execuções
- No seu navegador
- Custo
- Grátis · sem cadastro
- Disponibilidade
- Pronto para usar
Roda inteiramente no seu navegador
Go
type User struct {
ID int64 `json:"id"`
UserName string `json:"user_name"`
AvatarURL string `json:"avatar_url"`
Score float64 `json:"score"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
ZipCode string `json:"zip_code"`
}As chaves ausentes em alguns objetos de um array recebem omitempty; as chaves que às vezes são nulas tornam-se ponteiros. Confira os tipos na documentação da sua API: uma amostra mostra apenas o que contém.
De um exemplo a um tipo
Go decodifica JSON em structs com encoding/json, associando cada chave a um campo pela tag json ou, quando não há tag, pelo nome, sem diferenciar maiúsculas de minúsculas. Apenas campos exportados, aqueles que começam com letra maiúscula, são preenchidos. Por isso, todos os campos aqui começam com maiúscula e mantêm a chave original na tag.
Um único exemplo mostra apenas o que ele contém. Uma lista de usuários em que um deles não tem email informa ao conversor que email é opcional; um único objeto não consegue fazer isso. Quando possível, cole vários objetos representativos em um array e confira o resultado na documentação da API. O formatador de JSON ajuda a identificar primeiro a estrutura de uma resposta longa.
Outras linguagens e schemas
O mesmo exemplo pode se tornar interfaces TypeScript com o conversor JSON para TypeScript, para um front-end que lê a mesma API, ou um JSON Schema para validar os payloads na fronteira.
Como usar
- Cole um objeto ou array JSON, como uma resposta de API.
- Dê um nome ao tipo de nível superior e escolha entre structs separadas ou aninhadas.
- Copie o código Go.
Privacidade e limitações
Seu JSON é convertido no navegador e nunca é enviado.
Ferramentas relacionadas
Perguntas frequentes
Por que user_id se torna UserID, e não UserId?
O estilo do Go escreve siglas com uma única capitalização, como em UserID, APIKey e AvatarURL. O conversor usa a lista de siglas do golint, o linter que popularizou essa regra.
Quando um campo recebe omitempty ou um ponteiro?
Quando o exemplo é um array de objetos e uma chave está ausente em alguns deles, o campo recebe omitempty, para que a serialização não o inclua quando estiver vazio. Quando uma chave é null em alguns objetos, o campo se torna um ponteiro, permitindo que nil represente null. Você também pode adicionar omitempty a todos os campos.
Por que int64 e float64?
O JSON tem um único tipo numérico. Um valor escrito sem ponto decimal se torna int64, e qualquer valor com parte fracionária se torna float64. Se um ID puder ultrapassar 2^53 ou for, na verdade, uma string disfarçada, altere o tipo manualmente: um exemplo mostra apenas os valores que contém.
O que acontece com valores null ou arrays vazios?
Quando não há informações suficientes, um campo que é sempre null ou um array vazio recebe o tipo any (interface{}), que aceita qualquer valor. Substitua-o pelo tipo correto quando souber qual é.
Ferramenta grátis · no seu navegador execuções · não precisa de conta