У меня есть массив:
var newquestions;
questions = ["Item1","Item2","Item3","Item4","item5"];
Я сохраняю массив в localstorage следующим образом:
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>)
Кто-нибудь знает, в чем проблема?
Спасибо
Вы можете попробовать, чтобы проверить ошибки:
Выясните размер localStorage и сравните с вашим json-объектом.
Вы не хотите выделять большие объекты в одну запись localStorage. Это было бы очень неэффективно - все это нужно было бы анализировать и перекодировать каждый раз, когда некоторые незначительные изменения деталей. Кроме того, JSON не может обрабатывать множество перекрестных ссылок внутри структуры объекта и уничтожает множество деталей, например, конструктор, нечисловые свойства массивов, что в разреженной записи и т.д.
В моем codepen
он работает правильно здесь.
Вы должны обернуть массив в объект. (Поместите {
и }
вокруг массива). Это может помочь попытаться выполнить регистрацию содержимого перед его расшифровкой, чтобы узнать, действительно ли то, что вы вставляете,
В вашем коде есть опечатка, в которой вы устанавливаете элемент
localStorage.setItem("newQuestionsArray", JSON.stringify(questions));
После newQuestionsArray появляется пробел. Удалите это
Он должен работать нормально, если не было места. Или у вас есть огромные данные в этой переменной. Я думаю, что максимальный размер данных не может превышать 4 КБ. Так что это может быть проблемой при хранении
localStorage.getItem("newQuestionsArray")
в консоли браузера, чтобы просмотреть вывод?