【问题标题】:Why isn't localStorage accepting my object? [duplicate]为什么 localStorage 不接受我的对象? [复制]
【发布时间】:2018-03-30 11:46:27
【问题描述】:

我需要在localstorage 中存储一个类似于下面示例的对象。我需要能够检索此对象并对其进行编辑,然后将其保存回localStorage 以备下次使用。

var data = {lastEdit:"September", expires:"December", records:[{arrives: "12:45", departs: "12:51"}, {arrives: "13:03", departs: "13:04"}]};

我试过了,但它说'未定义':

localStorage.setItem("dataStore1", data);
var output = localStorage.getItem("dataStore1");

我能做些什么来解决它?

已解决

【问题讨论】:

  • localStorage 仅接受字符串作为数据,在将数据传递给本地存储之前对您的数据使用JSON.stringify
  • 仅供参考 localStorage 不是 JavaScript 的一部分。它是浏览器实现的 API 标准,而不是语言功能。
  • 全部完成,感谢您的帮助

标签: javascript object


【解决方案1】:

使用JSON.stringify() 设置JSONJSON.parse()JSON 转换为JavaScript 对象; localStorage 期望设置一个字符串。

【讨论】:

  • 啊,好的。我试试看。
  • 那行得通 - 谢谢!当它允许我时,我会接受你的回答
【解决方案2】:

来自Using the Web Storage API

“存储对象是简单的键值存储,类似于对象,但它们在页面加载时保持不变。键和值始终是字符串(请注意,整数键将是自动转换为字符串,就像对象所做的那样)。”

您不能在 localStorage 中存储复杂的 Object 值。对不起。

相反,您应该将您的对象序列化为字符串 [提示:JSON.stringify()],然后在检索到它后从 JSON 字符串解析回对象 [提示:JSON.parse()]。

【讨论】:

  • 感谢您为我澄清这一点 - 非常感谢!
【解决方案3】:

localstorage 仅限于字符串键/值对在存储之前使用JSON.stringify(),在检索之后使用JSON.parse()

var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject));

【讨论】:

  • 虽然您的答案是正确的,但在您的答案之前已经存在的其他两个答案并没有说明什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多