0Pricing
Go Academy · Aula

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"
  • ,omitempty ignora valores zero
  • - ignora um campo; ,string coloca 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.

Todas as aulas deste curso

  1. O que são tags de structs
  2. Tags JSON
  3. Bibliotecas de validação
  4. Análise personalizada de tags
← Voltar para Go Academy