Javascript 在localStorage中导出数据,以便以后重新导入

Javascript 在localStorage中导出数据,以便以后重新导入,javascript,import,export,local-storage,Javascript,Import,Export,Local Storage,我想从localStorage中导出一些项目,以便在外部保存,但要以某种格式保存,以便以后可以再次导入 我的尝试是编写可执行代码,稍后可以粘贴到文本区域。然后,该textare的值将被简单地赋值为eval() 问题:存储在localStorage中的数据存储为 var数据=[]; data.push('sampledata'); push({sample:'object'}); setItem('varname',data); 所以它包含了各种我不喜欢的字符,比如“,”等等 到目前为止,我的(

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

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

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

var数据=[];
data.push('sampledata');
push({sample:'object'});
setItem('varname',data);
所以它包含了各种我不喜欢的字符,比如“,”等等

到目前为止,我的(无效)解决方案是:

var-container=$('localDataContainer');
container.append('localStorage.setItem(“cockpitLastVisited”),“'+localStorage.getItem(“cockpitLastVisited”)+”);
); container.append('localStorage.setItem(“驾驶舱_服务”),“'+localStorage.getItem(“驾驶舱_服务”)+”);
); container.append('localStorage.setItem(“驾驶舱用户”),“'+localStorage.getItem(“驾驶舱用户”)+”);

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

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

写入本地存储

localStorage.setItem("varname",JSON.stringify(originalVarname));
从本地存储器读取

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

下面介绍如何导入/导出整个本地存储

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

导出

copy(JSON.stringify(localStorage));
var data = JSON.parse(/*paste stringified JSON from clipboard*/);
Object.keys(data).forEach(function (k) {
  localStorage.setItem(k, data[k]);
});
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]);
});
这将把本地存储复制到剪贴板。(需要两个JSON.stringify()才能转义引号。)

导入

copy(JSON.stringify(localStorage));
var data = JSON.parse(/*paste stringified JSON from clipboard*/);
Object.keys(data).forEach(function (k) {
  localStorage.setItem(k, data[k]);
});
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]);
});

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

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

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

只是一个现代化版本的answer

只需在控制台中运行此命令,它就会将用于恢复本地存储的代码放回剪贴板中

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

javascript:prompt(`localStorage from${location.host}${new Date().tolocalString()}`,`/*localStorage from${location.host}${new Date().tolocalString()}*/Object.entries(${JSON.stringify(localStorage)}).forEach([k,v])=>localStorage.setItem(k,v))`)

导出

copy(JSON.stringify(localStorage));
var data = JSON.parse(/*paste stringified JSON from clipboard*/);
Object.keys(data).forEach(function (k) {
  localStorage.setItem(k, data[k]);
});
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]);
});
导入

copy(JSON.stringify(localStorage));
var data = JSON.parse(/*paste stringified JSON from clipboard*/);
Object.keys(data).forEach(function (k) {
  localStorage.setItem(k, data[k]);
});
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]);
});

对于导入,我们还需要两个JSON.parse(),这不应该是:
localStorage.setItem(k,JSON.stringify(data[k]))
,以便数据作为字符串返回到本地存储?我需要两次以上的字符串化。一次字符串化对我不起作用。