¿Cómo almacenar objetos en el almacenamiento local de HTML5?
Problema: Almacenamiento de objetos en el almacenamiento local de HTML5
El almacenamiento local en HTML5 permite a los sitios web guardar datos en el navegador del usuario. Solo admite el almacenamiento de cadenas de texto, lo que dificulta guardar estructuras de datos complejas como objetos. Este problema requiere una solución para almacenar y recuperar objetos en el almacenamiento local.
Solución: Uso de JSON para Almacenar Objetos en el Almacenamiento Local
Convertir Objetos a Cadenas
Para almacenar objetos en el Almacenamiento Local, puedes usar JSON.stringify(). Este método convierte objetos JavaScript en cadenas JSON. Después de la conversión, puedes almacenar la cadena en el Almacenamiento Local.
Por ejemplo:
const myObject = { name: "John", age: 30 };
const jsonString = JSON.stringify(myObject);
localStorage.setItem("user", jsonString);
Ejemplo: Manejar Referencias Circulares
Al usar JSON.stringify(), ten en cuenta las referencias circulares en tus objetos. Estas pueden causar errores. Para evitarlo, puedes usar una función reemplazadora personalizada:
const replacer = (key, value) => {
if (typeof value === 'object' && value !== null) {
if (cache.includes(value)) return '[Circular]';
cache.push(value);
}
return value;
};
const cache = [];
const jsonString = JSON.stringify(myObject, replacer);
localStorage.setItem("user", jsonString);
Recuperar y Analizar Objetos Almacenados
Para obtener el objeto almacenado, usa JSON.parse(). Este método transforma la cadena JSON almacenada de vuelta a un objeto JavaScript. Este proceso restaura la estructura y propiedades del objeto.
Así es como puedes obtener el objeto:
const storedJsonString = localStorage.getItem("user");
const retrievedObject = JSON.parse(storedJsonString);
console.log(retrievedObject.name); // Salida: John
console.log(retrievedObject.age); // Salida: 30
Guía paso a paso para el almacenamiento de objetos en Local Storage
Preparación del objeto para el almacenamiento
Para almacenar un objeto en Local Storage, crea tu objeto JavaScript. Luego, usa JSON.stringify() para convertirlo en una cadena de texto. Aquí tienes un ejemplo:
const userObject = {
name: "Alice",
age: 28,
hobbies: ["reading", "swimming"]
};
const userString = JSON.stringify(userObject);
Ejemplo: Manejo de objetos complejos
Al trabajar con objetos complejos que contienen funciones o referencias circulares, considera usar una función replacer personalizada con JSON.stringify() para manejar estos casos adecuadamente.
Almacenamiento del objeto en Local Storage
Después de preparar el objeto, usa localStorage.setItem() para almacenarlo. Este método toma dos argumentos: una clave (una cadena para identificar los datos) y el objeto convertido a cadena. Por ejemplo:
localStorage.setItem("user", userString);
Recuperación del objeto desde Local Storage
Para obtener el objeto almacenado, usa localStorage.getItem() con la clave que usaste para almacenar los datos. Esto devuelve la cadena almacenada. Luego, usa JSON.parse() para convertir la cadena de vuelta a un objeto. Así es como se hace:
const storedUserString = localStorage.getItem("user");
const retrievedUserObject = JSON.parse(storedUserString);
console.log(retrievedUserObject.name); // Salida: Alice
console.log(retrievedUserObject.hobbies[0]); // Salida: reading