Javascript - 如何防止 localStorage 将数据存储为字符串?

Jos*_*usa 1 javascript arrays string object local-storage

我当前正在使用一组数据,它是对象数组。为了尝试加快加载时间,我尝试使用 localStorage 来存储数据并快速访问它。最大的问题是数据不是存储为对象数组,而是存储为字符串。数据本身看起来像这样。

[{id: 1, name: "BP", industry: "oil and gas", indicator: "Board Oversight"}, 
{id: 2, name: "Shell", industry: "oil and gas", indicator: "Board Oversight"}]
Run Code Online (Sandbox Code Playgroud)

整个数组存储在一个名为 的变量中dataSet,我尝试将其存储到本地存储中,如下所示。

localStorage.setItem('finalDataset', dataSet)
Run Code Online (Sandbox Code Playgroud)

当我尝试获取该项目时,存储在其中的数据看起来是正确的,但该数据是一个字符串,而不是我真正想要的。那么如何以完全相同的格式将这些数据存储在 localStorage 中呢?

我也尝试这样做localStorage.setItem('finalDataset', JSON.stringify(dataSet)),并且也返回了一个字符串。

T.J*_*der 6

Javascript - 如何防止 localStorage 将数据存储为字符串?

你不能,这就是它的作用。

可以做的是使用字符串友好的序列化格式,例如 JSON。

检索:

const data = JSON.parse(localStorage.getItem("name") || "null");
Run Code Online (Sandbox Code Playgroud)

它检索并反序列化数据。null如果没有为该密钥存储任何内容,您会得到。(从技术上讲,您甚至不需要|| "null"其中的一部分,因为localStorage.getItem("name")返回null并将JSON.parse其参数强制为字符串,但是......无论如何我都喜欢包含它,为了......清晰度?)

储藏:

localStorage.setItem("name", JSON.stringify(data));
Run Code Online (Sandbox Code Playgroud)