Массив массивов объектов 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.