Одной из общих проблем, с которой сталкиваются разработчики JavaScript, является хранение объектов в localStorage
или sessionStorage
. Эти механизмы хранения позволяют сохранять пары ключ-значение в браузере пользователя. Однако, если попытаться сохранить объект JavaScript, он будет преобразован в строку.
Рассмотрим следующий пример:
var testObject = { 'one': 1, 'two': 2, 'three': 3 }; // Помещаем объект в хранилище localStorage.setItem('testObject', testObject); // Извлекаем объект из хранилища var retrievedObject = localStorage.getItem('testObject'); console.log(typeof retrievedObject); // "string" console.log(retrievedObject); // "[object Object]"
Как видно из примера, при попытке сохранить объект JavaScript в localStorage
, он преобразуется в строку. Это происходит потому, что localStorage
и sessionStorage
могут хранить только строки.
Решение
Проблема может быть решена с помощью методов JSON.stringify
и JSON.parse
. JSON.stringify
преобразует объект JavaScript в строку JSON, которую можно сохранить в localStorage
или sessionStorage
. JSON.parse
преобразует строку JSON обратно в объект JavaScript.
Вот как это может выглядеть:
var testObject = { 'one': 1, 'two': 2, 'three': 3 }; // Преобразуем объект в строку JSON и сохраняем в хранилище localStorage.setItem('testObject', JSON.stringify(testObject)); // Извлекаем строку JSON из хранилища и преобразуем обратно в объект var retrievedObject = JSON.parse(localStorage.getItem('testObject')); console.log(typeof retrievedObject); // "object" console.log(retrievedObject); // {one: 1, two: 2, three: 3}
Таким образом, можно хранить объекты JavaScript в localStorage
или sessionStorage
, преобразуя их в строки JSON и обратно.
Добавить комментарий