将JSON存储到本地存储不起作用

时间:2018-07-12 09:09:32

标签: javascript angular

按下按钮后,我想将一个项目(嵌套JSON)保存到新的Array中并将其存储到localstorage。

addFavourite(card) {
    console.log(JSON.stringify(card));
    var cards = [];
    this.cardfavouriteArray.push.apply(cards, card)
    this.storage.set('favouriteData', this.cardfavouriteArray);
    }


getData() {
    var data = this.storage.get('favouriteData');
    if(data){
      this.storage.get('favouriteData').then((val) => {
        console.log('test', JSON.stringify(val));
      });
    }

我没有收到任何错误,但“ test”始终为空。我需要它作为数组。

3 个答案:

答案 0 :(得分:3)

Set

Get localstorage 方法因使用的服务而异

1. HTML5 localStorage -如果您直接使用HTML5 localStorage,则应使用localStorage.getItemlocalStorage.setItem

2.localstorage仅限于存储字符串键/值对。在使用设置并从localstorage获取数据时,请使用JSON.stringify和JSON.parse

addFavourite(card) {
    console.log(JSON.stringify(card));
    var cards = [];
    this.cardfavouriteArray.push.apply(cards, card)
    this.storage.setItem('favouriteData', JSON.stringify(this.cardfavouriteArray));
    }


getData() {
    var data = this.storage.get('favouriteData');
    if(data){
      this.storage.getItem('favouriteData').then((val) => {
        console.log('test', JSON.parse(val));
      });
    }

3. ng2-webstorage -对于 ng2-webstorage this.storage.retrieve {{1 }} 将起作用。

答案 1 :(得分:0)

this.storage.set('favouriteData', this.cardfavouriteArray);更改为localStorage.set('favouriteData', JSON.stringify(this.cardfavouriteArray));(这是按角度预先定义的方法)。还要对数组进行字符串化。

答案 2 :(得分:0)

像这样在本地存储中设置数组:

localStorage.setItem('favouriteData', JSON.stringify(this.cardfavouriteArray));

像这样从本地存储中获取数组:

var data = JSON.parse(localStorage.getItem('favouriteData'));

说明:这是因为localstorage无法存储对象,所以它以字符串格式存储。因此,我们需要JSON.stringify对象。此外,localStorage具有函数名称setItem和getItem,如以下定义:http://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage。当从本地存储中获取字符串时,我们需要JSON.parse将其转换回对象。

您正在使用this.storage.set和this.storage.get。目前尚不清楚您使用的是哪个库,但是我提到的代码是否可以在Angular或任何框架中使用。由于localStorage.setItem和localStorage.getItem是纯JavaScript。