在HTML5本地存储中存储javascript对象

在HTML5本地存储中存储javascript对象,javascript,html,local-storage,Javascript,Html,Local Storage,我想在HTML5本地存储中存储一个JavaScript对象 sessionStorage.setItem("localObj",this); 我在函数中使用上述语句。该对象包含HTML标记。 我既不能将其转换为字符串,也不能将其转换为JSON。 如何进行此操作?本地存储将仅存储字符串。如果无法对对象进行字符串表示,则无法存储该对象。本地存储的设计考虑了字符串/值对,因此您很难按原样存储对象。你要么需要把它“字符串化”,要么你需要看别的东西。上述问题的答案应有助于: 您必须首先将对象转换为js

我想在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
(及其子元素)转换为字符串,并在需要时将其转换回。您会收到错误“将循环结构转换为JSON”,因为在生成dom元素的JSON结构时,它会创建循环依赖关系。就像在dom中有一个名为“parentNode”、“parentElement”、“offsetParent”等的属性,它将dom元素作为其子元素。因此它会创建循环依赖性,而json不能序列化,这仅仅是因为这个原因。javascript对象包含HTML,如果我使用json.stringfy(obj),则如下所示。我得到一个错误:将循环结构转换为JSONUnderstanding。一种方法是在Javascript对象中实现自己的
toJSON()
函数。然后可以根据需要处理其中的HTML实体。一旦
stringify
遇到您的对象,它将遵从您的对象对
toJSON()
的实现。您会遇到错误“将循环结构转换为JSON”,因为当您为dom元素创建JSON结构时,它会创建循环依赖关系。就像在dom中有一个名为“parentNode”、“parentElement”、“offsetParent”等的属性,它将dom元素作为其子元素。因此,它会创建循环依赖性,而json不能被序列化,仅仅是因为这一点。