2012-12-04 80 views
15

JSON對象數組存儲在HTML5 localStorage中。
現在定界符是;
對於來自使用localStoragesplit(';')join(';')操作訪問和修改的對象陣列。localStorage處理對象數組

但是,分隔符方法看起來不穩定。
例如;可能會遇到對象屬性內部和split(';')操作將不正確。

它可以使用;;爲分界符,但我不確定它也會穩定。

是否有任何強大的方式來處理localStorage作爲對象數組呈現,至此localStorage保存爲String

EDIT

擋塊中的一個爲對象進行陣列無法保存到localStorage的古典:"[{},{}]"
localStorage automatially其轉換爲字符串似"{},{}"

我的當前數據內localStorage

"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}" 

假設
也許,我可以在年底開始和]添加[,但看起來並不gracefull

回答

34

只需將對象轉換爲JSON字符串:

localStorage.setItem("savedData", JSON.stringify(objects)); 

反之亦然:

objects = JSON.parse(localStorage.getItem("savedData"))); 

或者您可以在相同的localStorage值中添加多個對象:

localStorage.setItem("savedData", JSON.stringify([object1, object2 /*, etc*/])); 
object1 = JSON.parse(localStorage.getItem("savedData"))[0]; 
object2 = JSON.parse(localStorage.getItem("savedData"))[1]; 

Here's the DOM storage specification

您也可以訪問savedData這樣的:

localStorage.savedData = "Hello world" 
var foo = localStorage.savedData; 

這可以同時用於獲取和設置數據,但它被認爲是不那麼「安全」比getItem('name');setItem('name', 'value');

+0

嗨,我已經用真空中的字符串進行了測試,它工作正常,但問題在於JSON對象的數組保存爲''localStorage'',由','大括號括起來,例如。 ''{obj1},{obj2}「'我期望''[{obj1},{obj2}]」' – sergionni

+0

你能編輯實際的對象/數據到你的問題嗎?我不太清楚你現在想要保存的數據的外觀。 我很困惑,因爲:'JSON.stringify([{a:1},{b:2}]);'returns:'「[{」a「:1},{」b「:2}]」 ',像預期的一樣。 – Cerbrus

+0

剛剛添加了更多信息編輯部分,謝謝 – sergionni

0

閱讀變量:

var xyz = JSON.parse(localStorage.getItem('element'));

存儲變量:

localStorage.setItem('element' , JSON.stringify(xyz));

其中element是本地存儲變量的名稱和xyz js的變量的名稱。

0

如果數組不是太大,可以使用parse和stringify,但如果是這樣,那麼您將對每個小改動重新編碼整個數據集。

http://rhaboo.org的庫改進了這一點,即爲每個數組條目在鏈接列表中分配自己的localStorage條目。這意味着您可以非常有效地進行更改。與JSON不同,它也授予文本命名屬性和三種不同類型的稀疏條目(null,undefined,根本不存在)。

順便說一下,我寫了rhaboo。