21

我想从我的 localStorage 中导出一些项目以将其保存在外部但以某种格式保存,以便我以后可以再次导入它。

我的尝试是编写可以稍后粘贴到文本区域中的可执行代码。然后该 textare 的值将简单地被 eval()ed。

问题:存储在 localStorage 中的数据存储为

var data = [];
data.push('sampledata');
data.push({sample: 'object'});
localStorage.setItem('varname',data);

所以它包含我不喜欢的各种字符,比如','等

到目前为止,我的(不工作的)解决方案是:

var container = $('#localDataContainer');
container.append('localStorage.setItem("cockpitLastVisited","' + localStorage.getItem("cockpitLastVisited") + '");<br/>');
container.append('localStorage.setItem("cockpit_services","' + localStorage.getItem("cockpit_services") + '");<br/>');
container.append('localStorage.setItem("cockpit_users","' + localStorage.getItem("cockpit_users") + '");');

如果我的尝试似乎没问题,那么创建可以按原样执行的代码的最佳方法是什么?

4

5 回答 5

48

这是导入/导出整个 localStorage 的方法

出口

copy(JSON.stringify(localStorage));

这会将您的 localStorage 复制到剪贴板。(您需要两个 JSON.stringify() 来转义引号。)

进口

var data = JSON.parse(/*paste stringified JSON from clipboard*/);
Object.keys(data).forEach(function (k) {
  localStorage.setItem(k, JSON.stringify(data[k]));
});
于 2016-01-15T17:40:39.547 回答
17

只是杰里米的改进版本。简化流程

copy('var data = '+JSON.stringify(localStorage)+';Object.keys(data).forEach(function (k){localStorage.setItem(k, JSON.stringify(data[k]));});');

在您需要导出的控制台中运行它,它将本地存储内容与代码一起复制到剪贴板,然后将其粘贴到您要导入的控制台中。

于 2019-02-01T06:08:47.623 回答
12

您可以使用 JSON.stringify(对象到字符串)将对象编码为字符串,并使用 JSON.parse(字符串到对象)将字符串解码为对象。

写入本地存储

localStorage.setItem("varname",JSON.stringify(originalVarname));

从本地存储读取

var originalVarname= JSON.parse(localStorage.getItem("varname"));
于 2012-11-11T22:15:05.233 回答
10

出口

copy(JSON.stringify(JSON.stringify(localStorage)));

进口

var data = JSON.parse(/*previously copied stringified JSON from clipboard*/);
Object.keys(data).forEach(function (k) {
  localStorage.setItem(k, data[k]);
});
于 2020-05-19T14:11:40.057 回答
1

只是@iceLord答案的现代化版本。

只需在控制台中运行它,它会将恢复 localStorage 的代码放回剪贴板。

copy(`Object.entries(${JSON.stringify(localStorage)})
.forEach(([k,v])=>localStorage.setItem(k,v))`)

书签版

javascript:prompt(`localStorage from ${location.host}${new Date().toLocaleString()}`, `/* localStorage from ${location.host}${new Date().toLocaleString()}*/Object.entries(  ${JSON.stringify(localStorage)}).forEach(([k,v])=>localStorage.setItem(k,v))`)
于 2020-05-18T13:47:02.987 回答