0Pricing
Go Academy · Lección

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"
  • ,omitempty omite los valores cero
  • - ignora un campo; ,string convierte 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

  1. ¿Qué son las etiquetas de struct?
  2. Etiquetas JSON
  3. Bibliotecas de validación
  4. Análisis personalizado de etiquetas
← Volver a Go Academy