Serialización: proceso de convertir un objeto de un lenguaje de programación (por ejemplo, una clase en Python o Java) a un formato de texto plano, en este caso JSON, para enviarlo o almacenarlo.
Deserialización: proceso inverso: convertir un JSON recibido en un objeto del lenguaje para poder manipularlo en el código.
👉 Podés pensar la serialización como “empaquetar” y la deserialización como “desempaquetar”.
Esquema conceptual
Objeto (Python, Java, JS, etc.)
── serialización ──▶ JSON (texto plano, formato de intercambio)
◀─ deserialización ── Objeto en el programa
En una API REST:
👉 Sin serialización/deserialización no habría forma práctica de comunicar objetos entre sistemas en distintos lenguajes.
Imaginemos un objeto Producto
en un lenguaje de programación:
Producto {
id: 1,
nombre: "Notebook",
precio: 1500.0
}
Serialización a JSON
{
"id": 1,
"nombre": "Notebook",
"precio": 1500.0
}
Deserialización desde JSON
El JSON recibido del servidor se convierte otra vez en un objeto Producto
dentro del programa.
import json
# Objeto (diccionario)
producto = {
"id": 1,
"nombre": "Notebook",
"precio": 1500.0
}
# Serialización (objeto → JSON)
json_str = json.dumps(producto, ensure_ascii=False, indent=4)
print("JSON generado:\n", json_str)
# Deserialización (JSON → objeto)
json_recibido = '{"id": 2, "nombre": "Tablet", "precio": 900.5}'
producto_obj = json.loads(json_recibido)
print("Objeto Python:", producto_obj["nombre"], producto_obj["precio"])
👉 json.dumps()
convierte objeto a JSON. json.loads()
convierte JSON a objeto (diccionario).
// Objeto JavaScript
const producto = {
id: 1,
nombre: "Notebook",
precio: 1500.0
};
// Serialización (objeto → JSON)
const jsonStr = JSON.stringify(producto, null, 2);
console.log("JSON generado:\n", jsonStr);
// Deserialización (JSON → objeto)
const jsonRecibido = '{"id":2,"nombre":"Tablet","precio":900.5}';
const productoObj = JSON.parse(jsonRecibido);
console.log("Objeto JS:", productoObj.nombre, productoObj.precio);
👉 JSON.stringify()
serializa. JSON.parse()
deserializa. Referencia: MDN JSON.
import com.fasterxml.jackson.databind.ObjectMapper;
class Producto {
public int id;
public String nombre;
public double precio;
}
public class Main {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// Objeto Java
Producto producto = new Producto();
producto.id = 1;
producto.nombre = "Notebook";
producto.precio = 1500.0;
// Serialización (objeto → JSON)
String jsonStr = mapper.writeValueAsString(producto);
System.out.println("JSON generado:\n" + jsonStr);
// Deserialización (JSON → objeto)
String jsonRecibido = "{\"id\":2,\"nombre\":\"Tablet\",\"precio\":900.5}";
Producto prod2 = mapper.readValue(jsonRecibido, Producto.class);
System.out.println("Objeto Java: " + prod2.nombre + " $" + prod2.precio);
}
}
👉 writeValueAsString()
convierte objeto a JSON. readValue()
convierte JSON a objeto. Librería: Jackson.
using System;
using System.Text.Json;
public class Producto {
public int Id { get; set; }
public string Nombre { get; set; }
public double Precio { get; set; }
}
class Program {
static void Main() {
// Objeto C#
Producto producto = new Producto { Id = 1, Nombre = "Notebook", Precio = 1500.0 };
// Serialización (objeto → JSON)
string jsonStr = JsonSerializer.Serialize(producto, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine("JSON generado:\n" + jsonStr);
// Deserialización (JSON → objeto)
string jsonRecibido = "{\"Id\":2,\"Nombre\":\"Tablet\",\"Precio\":900.5}";
Producto prod2 = JsonSerializer.Deserialize(jsonRecibido);
Console.WriteLine($"Objeto C#: {prod2.Nombre} - {prod2.Precio}");
}
}
👉 JsonSerializer.Serialize()
serializa. JsonSerializer.Deserialize()
deserializa. Docs: System.Text.Json.
"precio": "1500"
(texto) en vez de 1500
(número).{ "error": "Formato de JSON inválido" }
Serialización = convertir objetos a JSON para enviar a la API.
Deserialización = convertir JSON recibido en objetos para manipular en el código.
Todos los lenguajes modernos tienen librerías que lo hacen automáticamente. Es la pieza que permite que un objeto en Python pueda comunicarse con un objeto en JavaScript a través de JSON.
👉 En resumen: sin serialización y deserialización, las APIs REST no podrían hablar el mismo idioma.