我有一个数组:
var newquestions;
questions = ["Item1","Item2","Item3","Item4","item5"];
我这样将数组保存到本地存储中:
localStorage.setItem("newQuestionsArray", JSON.stringify(questions));
我试图得到这样的数组:
newquestions = JSON.parse(localStorage.getItem("newQuestionsArray"));
但是会出现此错误:
Uncaught SyntaxError: Unexpected token I in JSON at position 0
at JSON.parse (<anonymous>)
有人知道这个问题是什么吗?
谢谢
答案 0 :(得分:1)
您可以尝试以下操作以检查错误:
找出size of localStorage并与您的json对象进行比较。
您不想将大对象分成单个localStorage条目。那将是非常低效的-每次有一些细微的细节更改时,都必须对整个事物进行解析和重新编码。另外,JSON无法处理对象结构中的多个交叉引用,并且会抹去很多细节,例如构造函数,数组的非数字属性,稀疏条目中的内容等。
在我的codepen
中,它在这里正常工作。
答案 1 :(得分:0)
您应该将数组包装在一个对象中。 (将{
和}
放在数组周围)
在解码内容之前先尝试记录这些内容,以查看您输入的内容实际上是否是您获取的内容
答案 2 :(得分:0)
您的代码中有一个错字,您可以在其中设置项目
localStorage.setItem("newQuestionsArray", JSON.stringify(questions));
newQuestionsArray后有一个空格。删除该空格
如果没有空间,它应该可以正常工作。否则,该变量中是否有大量数据。我认为数据的最大大小不能超过4kb。所以这可能是存储时的问题