导出localStorage中的数据以便以后重新导入

时间:2012-11-11 22:08:37

标签: javascript import export local-storage

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

我的尝试是编写可以在以后的textarea中粘贴的可执行代码。然后,该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") + '");');

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

5 个答案:

答案 0 :(得分:27)

以下是导入/导出整个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, data[k]);
});

答案 1 :(得分:8)

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

写入localStorage

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

从localStorage读取

var originalVarname= JSON.parse(localStorage.getItem("varname"));

答案 2 :(得分:4)

只是Jeremy的改进版本。为了简化流程

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

在需要导出的控制台中运行此命令,它将本地存储内容以及代码复制到剪贴板,然后将其粘贴到要导入的控制台中。

答案 3 :(得分:3)

导出

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]);
});

答案 4 :(得分:0)

只是@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))`)