Массив массивов объектов localStorage
Массив объектов JSON хранится в HTML5 localStorage
.
На данный момент разделитель ;
Для доступа и изменения массива объектов из localStorage
, split(';')
и join(';')
используемых операций.
Однако подход с разделителями выглядит неустойчивым.
Например, ;
может быть встречен внутри атрибута объектов, а операция split(';')
будет неправильной.
Его можно использовать ;;
для разделителя, но я не уверен, что он также будет стабильным.
Есть ли какой-либо надежный способ обработки localStorage
, представленный как массив объектов, а localStorage
сохранен как String
?
ИЗМЕНИТЬ
один из пробок - это то, что массив объекта не может быть сохранен в localStorage как классический: "[{},{}]"
localStorage
автоматически преобразует его в String как "{},{}"
мои текущие данные в localStorage
:
"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}"
предположение
возможно, я могу добавить [
в начале и ]
в конце, но он выглядит не gracefull
Ответы
Ответ 1
Просто преобразуйте объекты в строки JSON:
localStorage.setItem("savedData", JSON.stringify(objects));
И наоборот:
objects = JSON.parse(localStorage.getItem("savedData")));
Или вы можете добавить несколько объектов в одно и то же значение localStorage:
localStorage.setItem("savedData", JSON.stringify([object1, object2 /*, etc*/]));
object1 = JSON.parse(localStorage.getItem("savedData"))[0];
object2 = JSON.parse(localStorage.getItem("savedData"))[1];
Здесь спецификация хранилища DOM.
Вы также можете получить доступ к savedData
следующим образом:
localStorage.savedData = "Hello world"
var foo = localStorage.savedData;
Это может использоваться как для получения, так и для установки данных, но считается менее безопасным, чем getItem('name');
и setItem('name', 'value');
Ответ 2
Чтение переменных:
var xyz = JSON.parse( localStorage.getItem( 'element' ) );
Сохранять переменные:
localStorage.setItem( 'element' , JSON.stringify(xyz));
где element
- имя локальной переменной хранилища, а xyz
- имя переменной js.
Ответ 3
Вы можете использовать синтаксический анализ и строчить, если массив не слишком велик, но если это так, вы будете перекодировать весь набор данных для каждого небольшого изменения.
Библиотека в http://rhaboo.org улучшает это, предоставляя каждой записи массива собственную запись localStorage в связанном списке. Это означает, что вы можете делать изменения довольно эффективно. В отличие от JSON, он также отличает текстовые свойства и три разных типа разреженной записи (null, undefined и просто не существует.)
Кстати, я написал rhaboo.