Trabajo con JSON en Go: análisis y serialización para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con JSON en Go



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, ampliamente utilizado en desarrollo web, API y archivos de configuración. El lenguaje Go (Golang) proporciona el paquete integrado encoding/json, que permite realizar fácilmente el análisis (decodificación) y la serialización (codificación) de datos. En este artículo, exploraremos los fundamentos del trabajo con JSON en Go mediante ejemplos prácticos, comprensibles incluso para desarrolladores principiantes.



Fundamentos del paquete encoding/json



El paquete encoding/json es una biblioteca estándar de Go que no requiere instalación adicional. Las dos herramientas principales en este paquete son las funciones json.Marshal (serialización) y json.Unmarshal (deserialización).



Estructuras y etiquetas JSON



En Go, los datos generalmente se representan mediante estructuras (struct). Para controlar los nombres de los campos en JSON se utilizan etiquetas. Veamos un ejemplo simple:



package main

import ( "encoding/json" "fmt")

// Definimos una estructura con etiquetas JSONtype Person struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email,omitempty"` IsAdmin bool `json:"is_admin"`}

func main() { // Creamos una instancia de la estructura person := Person{ Name: "Iván Petrov", Age: 30, Email: "ivan@example.com", IsAdmin: true, } // Serializamos a JSON jsonData, _ := json.Marshal(person) fmt.Println(string(jsonData))}


Resultado de la ejecución:



{"name":"Iván Petrov","age":30,"email":"ivan@example.com","is_admin":true}


Puntos importantes:

  • La etiqueta json:"name" indica cómo se llamará el campo en JSON
  • La opción omitempty omite campos vacíos (valores cero)
  • Los campos de la estructura deben ser exportables (comenzar con mayúscula)


Serialización (Marshal) de datos a JSON



La serialización es el proceso de convertir una estructura de Go u otro tipo de datos en una cadena JSON. La función json.Marshal devuelve un segmento de bytes ([]byte) y un error.



Ejemplos de serialización de diferentes tipos



package main

import ( "encoding/json" "fmt")

type Product struct { ID int `json:"id"` Name string `json:"name"` Price float64 `json:"price"` Tags []string `json:"tags,omitempty"` InStock bool `json:"in_stock"`}

func main() { // Serialización de una estructura product := Product{ ID: 101, Name: "Portátil", Price: 79999.99, Tags: []string{"electrónica", "portátiles"}, InStock: true, } // Salida formateada con sangría jsonData, _ := json.MarshalIndent(product, "", " ") fmt.Println(string(jsonData)) // Serialización de un slice de estructuras products := []Product{ {ID: 1, Name: "Ratón", Price: 1500.00, InStock: true}, {ID: 2, Name: "Teclado", Price: 3500.00, InStock: false}, } jsonArray, _ := json.Marshal(products) fmt.Println(string(jsonArray))}


Resultado:



{  "id": 101,  "name": "Portátil",  "price": 79999.99,  "tags": [    "electrónica",    "portátiles"  ],  "in_stock": true}[{"id":1,"name":"Ratón","price":1500,"in_stock":true},{"id":2,"name":"Teclado","price":3500,"in_stock":false}]


Análisis (Unmarshal) de JSON en Go



El análisis es el proceso inverso: convertir una cadena JSON en una estructura de Go. Para esto se utiliza la función json.Unmarshal.



Ejemplo básico de análisis



package main

import ( "encoding/json" "fmt" "log")

type User struct { Username string `json:"username"` Age

Blogs

Book Recommendations