我想要在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