使用stringify设置和获取对象到本地存储?

时间:2012-08-21 08:55:22

标签: javascript object local-storage stringify

创建一个名为car的对象:

function car(temp){

    this.brand=temp[0];
    this.color=temp[1];
    this.year=temp[2];
}

var temp = ['Skoda', 'Red', '2012'];
car = new car(temp);
  1. 从localStorage读取后设置对象并进行字符串化:

    localStorage.setItem('car',car);
    car = localStorage.getItem('car');
    car = JSON.stringify(car);
    
    stringify后的

    汽车-----------------> [object object]在file:/// android_asset / www / ...

  2. 将对象和对象设置为localStorage后: localStorage.setItem('car',JSON.stringify(car)); car = localStorage.getItem('car');

  3. stringify后的

    汽车-----------------> “{\”brand \“:\”Skoda \“,\”color \“:\”Red \“,\”year \“:\”2012 \“}”at file:/// android_asset / www /。 ..

    问题1:为什么它会使你对对象进行字符串化时的顺序有什么不同?

    问题2:为什么我不能像这样使用字符串化对象:

    08-21 11:49:14.860: I/Web Console(9642): car after stringify----------------->     {"brand":"Skoda","color":"Red","year":"2012"}
    

    console.log(“car.brand ----->”+ car.brand); car.name ----->未定义

4 个答案:

答案 0 :(得分:17)

根据我的理解,一旦字符串化,你就不能使用你的字符串化对象,因为它不再是一个对象。这是一个字符串。

因此,当您尝试对字符串执行car.brand时,没有属性brand

就个人而言,我认为良好的做法是做。

 function car(temp){
     this.brand=temp[0];
     this.color=temp[1];
     this.year=temp[2];
 }

 var temp = ['Skoda', 'Red', '2012'];
 car = new car(temp);

 localStorage.setItem('car',JSON.stringify(car)); 
 car = localStorage.getItem('car');
 car = JSON.parse(car);

这意味着汽车对象现在不是字符串而是对象。

执行此操作时,还要使用stringify写入本地存储并使用parse读取。

答案 1 :(得分:10)

您无法存储JavaScript对象是localStorage,see this question

所以使用你的第二个选项。首先对存储它的对象进行字符串化。然后拿起它并将其解析为javascript对象。

localStorage.setItem('car',JSON.stringify(car));
carString = localStorage.getItem('car');
car = JSON.parse(carString);
console.log(car.brand); // Skoda

答案 2 :(得分:0)

我最近遇到了同样的问题。看看我写的这个脚本 https://github.com/andresgallo/truStorage

它允许存储和检索本地存储中的对象。如果需要,它会自动将对象作为对象返回。另一件事是您还在嵌套对象中设置和获取项目。最重要的是它是一个小小的脚本。

答案 3 :(得分:0)

最新的浏览器现在支持localStorage本地对象。我已经使用Chrome v44和Firefox v34测试了这个:

localStorage
Storage {debug: "undefined", uid: "3", length: 2} 

typeof localStorage
"object"

所以从现在开始。你会没事的。