Etiquetas JSON
Controle la serialización
Etiquetas JSON es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Las etiquetas JSON controlan la serialización
El paquete encoding/json usa las etiquetas json para decidir los nombres de las claves y las reglas al convertir structs a JSON y desde JSON.
Nombres de campo predeterminados
Sin etiquetas, las claves JSON coinciden exactamente con los nombres de los campos exportados, incluida la capitalización.
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))
}Cambio de nombre de las claves
Una etiqueta json cambia el nombre de la clave en la salida. Aquí, Name se convierte en el nombre en 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))
}La opción omitempty
Añada ,omitempty para omitir un campo de la salida cuando contenga su valor cero (cadena vacía, 0, nil, etc.).
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))
}Ignorar un campo
Una etiqueta con el valor - indica al codificador que omita por completo el campo, lo que resulta útil para secretos como las contraseñas.
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))
}Deserialización con etiquetas
Las etiquetas funcionan en ambos sentidos. Al decodificar JSON, la etiqueta indica al decodificador qué clave JSON debe rellenar 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)
}Coincidencia sin distinguir mayúsculas y minúsculas
Al deserializar, Go compara las claves JSON con las etiquetas sin distinguir mayúsculas y minúsculas como alternativa. Aun así, definir las etiquetas explícitamente es la opción más segura y clara.
La opción string
La opción ,string codifica un campo numérico o booleano como una cadena JSON. Resulta útil para sistemas que esperan los números entre comillas.
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))
}Combinación de opciones
Puede combinar un nombre con opciones: json:\"email,omitempty\". El nombre va primero y después aparecen las opciones separadas por comas.
Los campos no exportados se omiten
Solo se serializan los campos exportados (con inicial mayúscula). Un campo en minúsculas es invisible para encoding/json, independientemente de la etiqueta que tenga.
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))
}Salida con formato
json.MarshalIndent da formato al JSON con sangría, lo que resulta práctico para obtener registros legibles sin dejar de respetar las 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))
}Comprobación rápida
¿Qué hace la opción ,omitempty en una etiqueta json?
Repaso
Las etiquetas JSON controlan la serialización:
- Puede cambiar el nombre de las claves con
json:"name" ,omitemptyomite los valores cero-ignora un campo;,stringconvierte los números en cadenas- Solo se codifican los campos exportados
Preguntas frecuentes
¿La lección «Etiquetas JSON» es gratis?
Sí — el texto completo de «Etiquetas JSON» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Etiquetas JSON»?
Controle la serialización Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Etiquetas JSON»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- ¿Qué son las etiquetas de struct?
- Etiquetas JSON
- Bibliotecas de validación
- Análisis personalizado de etiquetas