JavaScript de Cero a Experto / Objetos
JSON: el idioma en que viajan los datos
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:
{
"nombre": "Almuerzo",
"valor": 18000,
"pagado": true,
"nota": null,
"etiquetas": ["trabajo", "semana"]
}- Las claves van SIEMPRE entre comillas dobles (
"nombre", nonombre). - 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.