我想要在HTML5本地存储中存储JavaScript对象。在HTML5本地存储中存储JavaScript对象
sessionStorage.setItem("localObj",this);
我在函数中使用了上述语句。该对象包含HTML标记。 我既不能将其转换为字符串,也不能将其转换为JSON。 我该如何处理?
我想要在HTML5本地存储中存储JavaScript对象。在HTML5本地存储中存储JavaScript对象
sessionStorage.setItem("localObj",this);
我在函数中使用了上述语句。该对象包含HTML标记。 我既不能将其转换为字符串,也不能将其转换为JSON。 我该如何处理?
你必须首先将对象转换成JSON,然后在本地存储存储。而当你想重用存储的数据时,你必须将json字符串反序列化为javascript对象,并且它会正常工作。
function setValue() {
var obj = new user();
var jsonObject = JSON.stringify(obj);
sessionStorage.setItem("Gupta", jsonObject);
getValue();
}
function user() {
this.Name = "rahul";
this.Age = 20;
}
function getValue() {
var json_string = sessionStorage.getItem("Gupta");
var obj = JSON.parse(json_string)
alert("Name = "+obj.Name + ", Age = " + obj.Age);
}
本地存储将只存储字符串。如果你不能对你的对象进行字符串表示,那么你不能存储它。
本地存储设计时考虑了字符串/值对,所以您将很难尝试按原样存储对象。你要么需要“串”它,要么你需要看别的东西。这个早期问题的答案应该帮助:
>'我既不能将其转换为一个字符串,也不到JSON'。为什么?你可以将一个'HTMLElement'(及其子项)转换为一个字符串,并在需要时将其转换回来。 – fardjad
你收到错误“将圆形结构转换为JSON”,因为当你制作你的dom元素的json结构时,它会创建循环依赖。就像你在你的dom中有一个名为'parentNode','parentElement','offsetParent'等的属性,它们有你的dom元素作为他们的孩子。所以它创建循环依赖和json不能序列化,因为只有。 – Sudarshan