O que esta ferramenta faz
Uma amostra JSON vira structs Go, um por objeto.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
type Root struct {
Id int `json:"id"`
FirstName string `json:"firstName"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
}
As colunas vão alinhadas como o gofmt alinha — nome, tipo, tag. Ninguém lê Go sem formatar, e colar isto num arquivo e rodar o gofmt não deve mudar nada.
Esse alinhamento é recente: os campos saíam separados por um único espaço. Coisa pequena, e ainda assim uma saída que não se parecia com a linguagem de que se reclama.
Os nomes são exportados, as chaves vivem na tag
O encoding/json ignora por completo os campos não exportados: um campo minúsculo não decodifica nada e não codifica nada, sem dizer palavra. Por isso todo campo é exportado — PascalCase, com um F à frente quando a chave começa por dígito (2fa dá F2fa) — e a tag leva a chave original, intacta.
Duas chaves que produzem o mesmo nome Go — user-name e userName — ficam separadas por um sufixo numerado. As tags continuam distintas: cada campo ainda corresponde à sua própria chave.
omitempty omite mais do que se pensa
A opção acrescenta ,omitempty a cada tag. Ela vale só na codificação e não distingue «ausente» de «zero»: 0, "", false, um slice vazio e um map nil somem todos da saída.
Serve bem para um filtro opcional e é falso para uma nota que pode valer zero legitimamente. Onde a diferença importa, a resposta habitual é um ponteiro — *int — que codifica null para nil e um zero de verdade caso contrário.
Os tipos, e o que uma amostra não consegue dizer
- Os inteiros viram
int, nãoint64. Em qualquer plataforma de 64 bits é a mesma coisa; um valor além dela falha alto na decodificação em vez de ser truncado em silêncio. nulle os valores desconhecidos viramany. Um array vazio vira[]any, um array misto também, salvo quando mistura inteiros e flutuantes — aí[]float64cobre os dois.- Nenhum campo é ponteiro e nenhum é opcional, porque uma amostra não pode mostrar isso. Uma chave que às vezes falta é um
*Tque você acrescenta, e é a primeira coisa a conferir contra uma segunda carga.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.