JSON对象数组存储在HTML5 localStorage
中
目前,分隔符是 ;
用于访问和修改所使用的localStorage
,split(';')
和join(';')
操作的对象数组。
但是,分隔符方法看起来不稳定
例如,在对象属性中可以满足 ;
,并且split(';')
操作将是不正确的。
可以使用 ;;
作为分隔符,但我不确定它是否也会稳定。
是否有任何可靠的方法来处理作为对象数组呈现的localStorage
,到目前为止localStorage
保存为String
?
修改
其中一个限制因素是无法将对象数组保存为localStorage:"[{},{}]"
localStorage
会自动将其转换为"{},{}"
localStorage
中的当前数据:
"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}"
假设
或许,我可以在开头添加[
,在结尾添加]
,但它看起来不是优雅的
答案 0 :(得分:38)
只需将对象转换为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');
答案 1 :(得分:0)
读取变量:
var xyz = JSON.parse( localStorage.getItem( 'element' ) );
存储变量:
localStorage.setItem( 'element' , JSON.stringify(xyz));
其中element
是本地存储变量的名称,xyz
是js变量的名称。
答案 2 :(得分:0)
如果数组不是太大,你可以使用parse和stringify,但如果是,那么你将为每一个小变化重新编码整个数据集。
http://rhaboo.org上的库通过在链表中为每个数组条目提供自己的localStorage条目来改进它。这意味着您可以非常有效地进行更改。与JSON不同,它还支持文本命名属性和三种不同类型的稀疏条目(null,undefined,而不是那里。)
BTW,我写了rhaboo。