2011-04-01 56 views
14

我trief使用中的PhoneGap的localStorage的对象的字符串“[对象的对象]”代替的对象,而是获得一个对象,为getItem只接收一个字符串"[object Object]"的PhoneGap localStorage的返回

var storage = window.localStorage; 
storage.setItem('test',{'name':'mark','greeting':'Hello'}); 
console.log(storage.getItem('test')); 

谷歌浏览器的控制台,它说:

[object Object]

的 “执行console.log(存储)” 的输出如下:

 
Storage 
... 
test: "[object Object]"

如果我试图访问它只是说“不确定”的对象的属性:

 
storage.getItem('test').name 

任何想法如何得到这个工作?

+0

你确定控制台不只是显示** [object Object]吗? 'console.log(storage.getItem('test')。name)'show? – RoToRa 2011-04-01 13:52:14

+0

正如我写的:'undefined' :) – hering 2011-04-01 14:14:05

+0

我完全错过了:-) – RoToRa 2011-04-01 14:20:54

回答

35

HTML5 localStorage允许您存储strings only

您在存储对象时必须执行JSON.stringify,而在检索对象时必须执行。

+1

我使用dojo并做了dojo.toJson和dojo.fromJson – blong824 2012-01-25 19:20:07

+0

stringify和parse方法值得黄金。但在Android上(在三星的2.3.3上的应用程序内浏览器中测试),会出现以下错误:“Web控制台(5504):在file:/// android_asset/www /”等位置未捕获非法访问,如果我尝试这样做: JSON.parse(localStorage.getItem('purchases')) – Wytze 2013-11-04 20:43:32

+0

@Wytze:如果你只是做'localStorage.getItem('购买')',没有JSON.parse,错误也会发生吗?因为“非法访问”听起来像问题在于localStorage,而不是JSON。 – Martijn 2013-11-05 08:52:32