SessionStorage 存对象刷新后取不出来怎么办?

萌新.晨羲 阅读 27

我在用 sessionStorage 缓存用户配置对象,页面刷新后读取总是得到 “[object Object]” 字符串,根本没法用。明明存的时候是正常对象啊,是不是我哪里搞错了?

试过直接存对象,也试过 JSON.stringify 再存,但取出来还是不对。下面是我现在的代码:

const userConfig = { theme: 'dark', lang: 'zh' };
sessionStorage.setItem('config', userConfig);

// 刷新页面后
const saved = sessionStorage.getItem('config');
console.log(saved); // 输出 "[object Object]"
我来解答 赞 7 收藏
二维码
手机扫码查看
1 条解答
FSD-红静
问题应该出在你直接把对象存进 sessionStorage 了。sessionStorage 只能存字符串,不是字符串的东西会被自动调用 toString() 方法转换成字符串,所以你会看到 "[object Object]"。

要解决这个问题很简单,存的时候把对象转成 JSON 字符串,取出来再解析回来就行。JSON.stringify 和 JSON.parse 就是干这个用的。

给你改一下代码:

const userConfig = { theme: 'dark', lang: 'zh' };
// 存的时候序列化
sessionStorage.setItem('config', JSON.stringify(userConfig));

// 刷新页面后
const savedStr = sessionStorage.getItem('config');
if (savedStr) {
const saved = JSON.parse(savedStr);
console.log(saved); // 现在是个对象了
}


这样就能正常存取对象了。记住了,跟 localStorage 一样,sessionStorage 只认字符串。有时候搞忘了这点就容易踩坑,我也被坑过不少次呢。
点赞
2026-03-27 11:06