sessionStorage не хранит оригинальный объект

У меня есть объект, который я получаю, выполняя функцию SDK. Когда я пытаюсь сохранить объект в хранилище сеанса и извлечь объект, извлеченный объект выглядит так же, как оригинальный, но когда я выполняю операции над новым объектом, я получаю ошибку.

var xyzObject = some_function();

sessionStorage.setItem("xyzObject",xyzObject);

var obj = JSON.parse(sessionStorage.getItem("xyzObject"));

obj.some_other_function();

Он показывает ошибку, так как obj.some_other_function не является функцией. Тогда как xyzObject.some_other_function работает отлично.

4 ответа

Пытаться

sessionStorage.setItem('xyzObject', JSON.stringify(xyzObject);

И получить с помощью:

  JSON.parse(sessionStorage.getItem('xyzObject'));

Вы не можете сохранить объект в sessionStorage или localStorage. Единственный возможный метод состоит в том, чтобы упорядочить объект и сохранить его в sessionStorage и при получении объекта из sessionStorage вы просто анализируете объект в JSON.

var xyzObject = some_function();

sessionStorage.setItem("xyzObject",JSON.stringify(xyzObject));

var stringData = sessionStorage.getItem("xyzObject");

var obj = JSON.parse(stringData);

obj.some_other_function();

sessionStorage хранит только строки в качестве значений.

Если вы хотите сохранить объект в sessionStorage, вы должны преобразовать объект в строку JSON, используяJSON.stringify()метод.

      const xyzObject = { name: "Juan" };

sessionStorage.setItem("xyzObject", JSON.stringify(xyzObject);

Затем, если вы хотите прочитать сохраненную строку JSON, вы должны проанализировать ее в объект JavaScript (или значение, массив и т. д.), используяJSON.parse()метод.

      const xyzObjectRetrieved = JSON.parse(sessionStorage.get("xyzObject"));
// it should equal { name: "Juan" }

Источник:

sessionStorageхранит пары ключ-значение, которые являются строками. Итак, всякий раз, когда ваш

      sessionStorage.setItem("xyzObject",xyzObject);

строка выполняется, ключxyzObjectвставляется вsessionStorage and a string is stored as a value. Since xyzObject` — это объект, он преобразуется в строку. Давайте преобразуем объект в строку и посмотрим, что произойдет:

Как видите, когда он преобразован в строку, он все еще не имеет функции, но, тем не менее, мы можем реконструировать объект, разобрав его в JSON и добавив функции. Так что вашиsome_functionдолжен быть изменен, чтобы принять объект и любые элементы данных, которые он имеет, он должен гарантировать, что результирующий объект будет соответствовать им, и функции будут добавлены.

Другие вопросы по тегам