javascript - 将 JSON 对象推送到 localStorage 中的数组

我在 Javascript 中有一个函数:

var a = [];
function SaveDataToLocalStorage(data)
{       
    var receiveddata = JSON.stringify(data);
    a.push(receiveddata);
    alert(a);

    localStorage.setItem('session', a);

}

data 参数是一个 JSON 对象。

但每次我点击按钮时,它都会覆盖我本地存储中的数据。

有人知道怎么做吗?

最佳答案

您需要采取几个步骤才能将此信息正确存储在 localStorage 中。然而,在我们开始编写代码之前,请注意 localStorage(在当前时间)不能保存除字符串之外的任何数据类型。您将需要序列化该数组以进行存储,然后将其解析出来以对其进行修改。

第 1 步:

只有在您的 localStorage session 变量中还没有存储序列化数组时,才应该运行下面的第一个代码片段。
为确保您的 localStorage 设置正确并存储数组,请先运行以下代码段:

var a = [];
a.push(JSON.parse(localStorage.getItem('session')));
localStorage.setItem('session', JSON.stringify(a));

上述代码只应运行一次,并且仅当您尚未在 localStorage session 变量中存储 array 时。如果您已经在执行此操作,请跳至第 2 步。

第 2 步:

像这样修改你的函数:

function SaveDataToLocalStorage(data)
{
    var a = [];
    // Parse the serialized data back into an aray of objects
    a = JSON.parse(localStorage.getItem('session')) || [];
    // Push the new data (whether it be an object or anything else) onto the array
    a.push(data);
    // Alert the array value
    alert(a);  // Should be something like [Object array]
    // Re-serialize the array back into a string and store it in localStorage
    localStorage.setItem('session', JSON.stringify(a));
}

这应该会为您处理其余的事情。当你解析出来时,它会变成一个对象数组。

希望这会有所帮助。

https://stackoverflow.com/questions/16083919/

相关文章:

javascript - 如何使用 underscore.js 生成扁平化结果

php - 如何在 PHP 5.3.0 之前验证 JSON?

python - 将 JSON 文件读入 Spark 时出现 _corrupt_record 错误

json - SQL Server OPENJSON 读取嵌套的 json

java - 在java中将JSON类型转换为字节数组格式

javascript - 为什么 JSON 很重要?

json - 调用 Web API 2 端点时出现 HTTP 415 不支持的媒体类型错误

json - 使用 jq 就地修改 json 中的键值

c# - 使用 Json.NET 将 JSON 反序列化为对象

android - 如何在 Android 中解析 JSON 对象