【问题标题】:local-storage javascript : How can I split 1 JSON containing 2 object into 2 JSON (1 per object?)local-storage javascript:如何将包含 2 个对象的 1 个 JSON 拆分为 2 个 JSON(每个对象 1 个?)
【发布时间】:2020-03-02 22:20:53
【问题描述】:

我将用户的购物篮存储在 localStorage 中(他可以拥有多个项目):

 let data = [];
 for (i = 0; i < rows.length - 1; i++) {
    let info = {
      "price": price,
      "quantity": quantity,
      "priceTotal": priceTotal
    };
    data.push(JSON.stringify(info));
  }
  localStorage.setItem("reservations", data);
}

如果用户有两个项目,我的 json 看起来像这样:

{"price":"10 €", "quantity":"1", "priceTotal":"10 €"},{"price":"20 €", "quantity":"2", "priceTotal":"40 €"}

我在控制台日志中打印它:

let info = localStorage.getItem("reservations");
console.log(info);

据我了解,这会将其打印为字符串。 我正在尝试使其成为一个对象,以便在其他地方使用 myObject[propertyName] 的数据,但是当 我尝试PARSEgetItem()

  let myObject = JSON.parse(window.localStorage.getItem('reservations'));

我收到一个错误:

VM8224:1 Uncaught SyntaxError: Unexpected token ,在 JSON 中的位置 123 在 JSON.parse() 处

是因为我的 Json 中有 2 个对象吗? 如何拆分对象?

我做了一个 jsfiddle:https://jsfiddle.net/Demky/4ea1s3rn/28/ (你需要打开控制台才能看到结果)

  • 保存数据

  • 读数据

  • 尝试 json.parse 时崩溃

    VM516:1 Uncaught SyntaxError: Unexpected token ,在 JSON 中的位置 51 在 JSON.parse 中`

如果我能让我的问题更清楚,请告诉我。

【问题讨论】:

  • 您的 JSON 数据需要包含在一个数组中。
  • 在此处查看更正jsfiddle.net/n19vbydq 由于这是一个小错误,我不喜欢将其作为答案。
  • 字符串化整个数组而不是单个项目。

标签: javascript jquery json local-storage


【解决方案1】:
 let data = [];
 for (i = 0; i < rows.length - 1; i++) {
    let info = {
      "price": price,
      "quantity": quantity,
      "priceTotal": priceTotal
    };
    data.push(info);
  }
  localStorage.setItem("reservations", JSON.stringify(data));
}

let myObject = JSON.parse(window.localStorage.getItem('reservations'));

localStorage.setItem 不允许您存储对象。因此,您应该将整个对象字符串化,然后获取它。它应该可以工作。

【讨论】:

    【解决方案2】:

    在将数组存储在本地存储中时,您应该对整个数组而不是数组的每个项进行字符串化。

     let data = [];
     for (i = 0; i < rows.length - 1; i++) {
        let info = {
          "price": price,
          "quantity": quantity,
          "priceTotal": priceTotal
        };
        data.push(info);
      }
      localStorage.setItem("reservations", JSON.stringify(data));
    }
    

    这里是the updated fiddle

    【讨论】:

      【解决方案3】:

      当您将数组存储在本地存储中时,您需要首先将该数据字符串化然后存储。 像这样。

      localStorage.setItem("reservations", JSON.stringify(data));

      【讨论】:

        猜你喜欢
        • 2016-11-07
        • 2018-02-12
        • 2016-09-05
        • 2014-10-03
        • 1970-01-01
        • 2015-10-16
        • 2019-06-06
        • 2012-11-11
        • 1970-01-01
        相关资源
        最近更新 更多