0Pricing
Go Academy · Lección

Codificación y decodificación de JSON

Marshal, Unmarshal y etiquetas de struct

Codificación y decodificación de JSON es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 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.

Descripción general de encoding/json

El paquete encoding/json de Go serializa valores de Go a JSON y deserializa JSON a valores de Go mediante etiquetas de struct y reflexión.

json.Marshal

json.Marshal convierte un valor de Go en bytes JSON. Devuelve un error para tipos no compatibles (canales, funciones y números complejos).

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
u := User{Name: "Alice", Age: 30}
data, err := json.Marshal(u)
fmt.Println(string(data)) // {"name":"Alice","age":30}

json.Unmarshal

json.Unmarshal decodifica JSON en un valor de Go. El destino debe ser un puntero.

var u User
err := json.Unmarshal(data, &u)
fmt.Println(u.Name) // "Alice"

Etiquetas de struct

Use etiquetas de struct json: para controlar los nombres de los campos, omitir valores vacíos y excluir campos no exportados.

type Product struct {
    ID    int    `json:"id"`
    Price float64 `json:"price,omitempty"` // omit if zero
    secret string // unexported: ignored
}

json.Encoder / json.Decoder

Para el procesamiento en streaming (cuerpos de respuestas y solicitudes HTTP), use Encoder y Decoder en lugar de Marshal/Unmarshal para evitar cargar todo el contenido en memoria.

// Writing
json.NewEncoder(w).Encode(user)
// Reading
var u User
json.NewDecoder(r.Body).Decode(&u)

Decodificación en map[string]any

Decodifique JSON desconocido en un mapa genérico:

var m map[string]any
json.Unmarshal(data, &m)
fmt.Println(m["name"])

json.Number

De forma predeterminada, los números de los mapas genéricos se decodifican como float64. Use decoder.UseNumber() para decodificarlos como json.Number y conservar la precisión.

dec := json.NewDecoder(r)
dec.UseNumber()
var m map[string]any
dec.Decode(&m)

Serialización personalizada

Implemente json.Marshaler o json.Unmarshaler para controlar la codificación y decodificación de un tipo, por ejemplo, para formatos de fecha personalizados.

func (d Date) MarshalJSON() ([]byte, error) {
    return json.Marshal(d.Format("2006-01-02"))
}

Omisión de campos

Use omitempty para omitir los valores cero. Use json:"-" para excluir siempre un campo de la salida JSON, independientemente de su valor.

Hidden string `json:"-"`

Gestión de null

Al deserializar, JSON null se convierte en el valor cero de Go para los escalares o establece un puntero en nil. Un puntero nil se serializa como null.

Impresión con formato

Use json.MarshalIndent para obtener una salida legible:

data, _ := json.MarshalIndent(u, "", "  ")

Comprobación rápida

¿Qué hace la etiqueta de struct `json:"name,omitempty"`?

Resumen: codificación y decodificación de JSON

Puntos clave:

  • json.Marshal/Unmarshal para datos en memoria; Encoder/Decoder para flujos
  • Las etiquetas de struct controlan los nombres, omitempty y la exclusión
  • Los tipos personalizados implementan Marshaler/Unmarshaler
  • Use json.MarshalIndent para la salida de depuración

Preguntas frecuentes

¿La lección «Codificación y decodificación de JSON» es gratis?

Sí — el texto completo de «Codificación y decodificación de 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 «Codificación y decodificación de JSON»?

Marshal, Unmarshal y etiquetas de struct 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 3 de 4.

¿Cuánto tiempo toma la lección «Codificación y decodificación de 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. Lectura de archivos con os y bufio
  2. Escritura de archivos y archivos temporales
  3. Codificación y decodificación de JSON
  4. JSON y CSV en streaming
← Volver a Go Academy