CodeForge

JavaScript de Cero a Experto / Objetos

JSON: el idioma en que viajan los datos

Teoría18 min20 XP

Tus objetos viven en la memoria de TU programa: cuando la página se cierra, desaparecen; y no puedes "enviar un objeto" por internet tal cual. Para guardar o transmitir datos hay que convertirlos en TEXTO — y el formato de texto que habla todo el mundo (APIs, bases de datos, archivos de configuración) se llama JSON. Hoy aprendes a empacar y desempacar.

Empacar al vacío

stringify y parse

El tercer argumento de JSON.stringify(dato, null, 2) es la indentación — úsalo siempre que un humano vaya a leer el resultado. Y nota el detalle final: parse construye un objeto NUEVO desde el texto. (De hecho, JSON.parse(JSON.stringify(x)) fue durante años el truco para copiar profundo... hasta que llegó structuredClone, que ya conoces.)

Las reglas del formato

JSON parece un objeto de JavaScript, pero es más estricto:

gasto.json
{
"nombre": "Almuerzo",
"valor": 18000,
"pagado": true,
"nota": null,
"etiquetas": ["trabajo", "semana"]
}
  • Las claves van SIEMPRE entre comillas dobles ("nombre", no nombre).
  • Solo comillas dobles para strings — nunca simples.
  • Sin comentarios, sin comas finales, sin funciones, sin undefined.
  • Tipos permitidos: strings, números, booleanos, null, arrays y objetos.

Nota honesta sobre lo que NO sobrevive el empaque: los métodos desaparecen en silencio (stringify los omite), undefined también, y las fechas llegan convertidas en string. Si tu objeto tiene comportamiento, JSON solo salva sus DATOS.

Guardaste un bolsillo con JSON.stringify y al recuperarlo con JSON.parse intentas llamar recuperado.consultar(). ¿Qué pasa y por qué?

Mini-reto

Empaca el array de gastos de "Mi Bolsillo" (unos 3 objetos) con JSON.stringify(gastos, null, 2) y míralo formateado en la consola. Luego desempácalo con parse, súmale un gasto nuevo con spread al resultado, y verifica que puedes seguir usando reduce sobre él. Acabas de simular el ciclo completo guardar → recuperar → seguir trabajando.

Qué sigue

Ya cierras el mundo de los objetos planos... pero JavaScript trae dos estructuras especializadas que resuelven lo que a objetos y arrays les cuesta: colecciones SIN duplicados y diccionarios con cualquier tipo de clave. La próxima lección presenta Set y Map — y el truco de una línea para quitar repetidos que usarás toda la vida.