Tags JSON
Controle a serialização
Tags JSON é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Etiquetas JSON controlam a serialização
O pacote encoding/json usa etiquetas json para decidir os nomes das chaves e as regras ao converter estruturas para JSON e a partir de JSON.
Nomes padrão dos campos
Sem etiquetas, as chaves JSON correspondem exatamente aos nomes dos campos exportados, incluindo a capitalização.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}Renomeando chaves
Uma etiqueta json altera o nome da chave na saída. Aqui, o nome do campo passa a ser escrito em minúsculas.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Age int "json:\"age\""
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}A opção omitempty
Adicione ,omitempty para omitir um campo da saída quando ele contiver seu valor zero, como uma string vazia, 0 ou nil.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Email string "json:\"email,omitempty\""
}
func main() {
b, _ := json.Marshal(User{Name: "Ann"})
fmt.Println(string(b))
}Ignorando um campo
Uma etiqueta com - instrui o codificador a ignorar completamente o campo, o que é útil para informações secretas, como senhas.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Password string "json:\"-\""
}
func main() {
b, _ := json.Marshal(User{"Ann", "secret"})
fmt.Println(string(b))
}Desserializando com etiquetas
As etiquetas funcionam nos dois sentidos. Ao decodificar JSON, a etiqueta informa ao decodificador qual chave JSON preenche cada campo.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
var u User
json.Unmarshal([]byte("{\"name\":\"Bob\"}"), &u)
fmt.Println(u.Name)
}Correspondência sem distinção de maiúsculas e minúsculas
Ao desserializar, Go compara as chaves JSON sem distinguir maiúsculas de minúsculas como alternativa. Ainda assim, definir etiquetas explicitamente é a opção mais segura e clara.
Opção de cadeia de caracteres
A opção ,string codifica um campo numérico ou booleano como uma cadeia de caracteres JSON. É útil para sistemas que esperam números entre aspas.
package main
import (
"encoding/json"
"fmt"
)
type Item struct {
ID int "json:\"id,string\""
}
func main() {
b, _ := json.Marshal(Item{ID: 42})
fmt.Println(string(b))
}Combinando opções
Você pode combinar um nome com opções: json:"email,omitempty". O nome vem primeiro, seguido pelas opções separadas por vírgulas.
Campos não exportados são ignorados
Apenas campos exportados, com inicial maiúscula, são serializados. Um campo em minúsculas fica invisível para encoding/json, independentemente da etiqueta que tenha.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
age int
}
func main() {
b, _ := json.Marshal(User{Name: "Ann", age: 30})
fmt.Println(string(b))
}Saída formatada
json.MarshalIndent formata o JSON com indentação, o que é útil para manter registros legíveis e ainda respeitar as etiquetas.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}Verificação rápida
O que a opção ,omitempty faz em uma tag json?
Recapitulação
As tags JSON controlam a serialização:
- Renomeie chaves com
json:"name" ,omitemptyignora valores zero-ignora um campo;,stringcoloca números entre aspas- Somente campos exportados são codificados
Perguntas Frequentes
A aula “Tags JSON” é grátis?
Sim — o texto completo de “Tags JSON” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Tags JSON”?
Controle a serialização Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Tags JSON”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.