JSON para Estrutura Go
Cole um exemplo de JSON e obtenha definições de estrutura Go que o analisam de forma limpa com encoding/json. Os campos são exportados (CamelCase), marcados com as chaves JSON originais, promovidos a ponteiros quando um valor pode ser nulo, e objetos aninhados recebem suas próprias declarações de estrutura nomeadas.
Como converter JSON em estrutura Go
-
1
Cole o JSON
Um único exemplo é suficiente. Múltiplos exemplos melhoram a inferência de nulos.
-
2
Escolha a nomenclatura
PascalCase para campos exportados é a convenção Go. Escolha o estilo de abreviação (`URL` vs `Url`, `ID` vs `Id`).
-
3
Escolha a estratégia opcional
Use ponteiros para campos anuláveis (mais idiomático), ou tags `omitempty`.
-
4
Copie as estruturas
Uma estrutura raiz mais as aninhadas. Cole em um arquivo `.go` e pressione `go build`.
Exemplo de saída
Para:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Saída:
type User struct {
FirstName string `json:"first_name"`
Age int `json:"age"`
Email *string `json:"email"`
Tags []string `json:"tags"`
}
Mapeamento de tipos
| Valor JSON | Tipo Go |
|---|---|
| string | string |
| inteiro | int ou int64 |
| número (decimal) | float64 |
| booleano | bool |
| nulo (com irmão não nulo) | *T (ponteiro) |
| array | []T |
| objeto | Estrutura nomeada |
| array misto | []interface{} |
Idiomas de nomenclatura que o gerador segue
- Inicialismos em maiúsculas:
id->ID,url->URL,api_key->APIKey. Isso corresponde ao estilo recomendado do Go (e às regras dogo vet/staticcheck). - Snake_case JSON -> campos PascalCase:
first_name->FirstName. - Acrônimos de uma palavra preservados:
IPpermaneceIP,HTTPpermaneceHTTP. - Tag JSON:
json:"first_name"mantém a chave original para que a codificação funcione corretamente.
Campos opcionais: ponteiro ou omitempty?
| Estratégia | Usar quando |
|---|---|
Ponteiro (*T) |
Você precisa distinguir “ausente” de “valor zero” |
omitempty |
Você só quer pular valores zero na serialização; a deserialização armazena zero para ausentes |
| Nenhum | O campo está sempre presente e valores zero são significativos |
O gerador usa por padrão ponteiro + omitempty para qualquer coisa vista como nula; ajuste com base na sua semântica.
Erros comuns
- Usar
intonde o inteiro JSON excedeMaxInt32em um alvo de 32 bits. Useint64para valores grandes conhecidos. - Serializar de volta e perder a ordem das chaves.
encoding/jsonemite chaves na ordem de declaração de campo, não na ordem JSON original. Classifique manualmente se precisar de saída canônica. - Arrays de formas mistas.
[]interface{}perde a segurança de tipo. Considere tipos de união com um campo discriminadortypeem vez disso. - Esquecer
omitemptyem opcionais. Sem isso, campos opcionais são serializados como"foo": nullem vez de serem omitidos.
Perguntas frequentes
Use ponteiros quando precisar distinguir “campo ausente” de “campo é zero”. Use omitempty quando o valor zero não for um valor de negócio legal ("", 0, false sempre significam “pule isso”). Muitas equipes escolhem um e aplicam consistentemente em toda a base de código.
Cada objeto aninhado se torna uma declaração de estrutura nomeada separada (por exemplo, User -> Address). Tipos são incorporados apenas quando a estrutura aninhada é pequena e usada uma vez; caso contrário, você obtém tipos limpos e reutilizáveis.
Sim. id se torna ID, url se torna URL, api_key se torna APIKey. Isso é o que o go vet espera e o que a maioria dos guias de estilo Go recomenda.
O gerador emite estruturas simples com tags padrão json:. Para implementações personalizadas de UnmarshalJSON (por exemplo, para datas em formatos não-ISO), adicione-as manualmente após a geração.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Gerador de EditorConfig
Gere um arquivo .editorconfig com suas regras de estilo e tamanho de indentação, fim de linha, charset e espaços em branco para formatação consistente entre IDEs e editores.
Validador de Email
Valide um endereço de email: verificação de sintaxe RFC 5322, consulta de registro MX em tempo real, além de detalhes de parte local, domínio e comprimento. Nenhum email é enviado.
Formatador de HTML
Formate HTML localmente no navegador com indentação de dois ou quatro espaços. O HTML não é enviado nem validado.
Ferramenta disponível em outros idiomas
- JSON vers Go Struct [FR]
- JSON till Go-struktur [SV]
- JSON เป็นโครงสร้างข้อมูล Go [TH]
- JSON إلى بنية Go [AR]
- JSON ke Struktur Go [ID]
- JSON thành cấu trúc [VI]
- JSON을 Go 구조체로 변환 [KO]
- JSON zu Go Struct [DE]
- JSON a Estructura Go [ES]
- JSON naar Go-structuur [NL]
- JSON na strukturę Go [PL]
- JSON→Go構造体 [JA]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]
- JSON to Go Struct [EN]
- JSON in Struttura Go [IT]