Uncaught SyntaxError: Unexpected end of JSON input : at JSON.parse (<anonymous>)

时间:2021-02-03 05:29:55

标签: javascript arrays json parsing local-storage

当我尝试解析 localStorage['highscores"] 时抛出错误

if (localStorage["highscores"] == undefined) {
    localStorage["highscores"] = [];
}
var highscores = JSON.parse(localStorage["highscores"]) || [];

我还没有定义 localStorage['highscores"] 所以我尝试检查它,如果它未定义,请定义它,如果它已满,我想将它的信息保存在 localStorage['highscores"] 中并添加更多信息.

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

本地存储可能只保存字符串。当你给它设置非字符串时,它会被强制为一个字符串。

当数组转换为字符串时,会在字符串上调用 .join(',')。空数组将被转换为空字符串:

console.log(String([]) === '');

无法解析 JSON。

改为保存空数组的 JSON 字符串化版本。

if (localStorage.highscores === undefined) {
    localStorage.highscores = '[]';
}

if (localStorage.highscores === undefined) {
    localStorage.highscores = JSON.stringify([]);
}

如有疑问,请在与本地存储之间传输时始终使用 JSON.stringify/JSON.parse