web-dev-qa-db-fra.com

tableau localStorage de gestion des objets

Les tableaux d'objets JSON sont stockés dans HTML5 localStorage.
Pour l'instant, le délimiteur est ;
Pour accéder et modifier un tableau d'objets à partir des opérations localStorage, split(';') et join(';') utilisées.

Cependant, l'approche du délimiteur semble instable.
Par exemple ; pourrait être rencontré dans l'attribut des objets et l'opération split(';') sera incorrecte.

Il pourrait être utilisé ;; pour le délimiteur, mais je ne suis pas certain qu'il sera également stable.

Existe-t-il un moyen robuste de gérer localStorage présenté comme un tableau d'objets, dans la mesure où localStorage enregistré sous String?

MODIFIER

l'un des stoppeurs est que le tableau d'objets n'a pas pu être enregistré dans localStorage comme classique: "[{},{}]"
localStorage le convertit automatiquement en String comme "{},{}"

mes données actuelles dans localStorage:

"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}"

hypothèse
peut-être, je peux ajouter [ au début et ] à la fin, mais cela ne semble pas gracieux

17
sergionni

Convertissez simplement les objets en chaînes JSON:

localStorage.setItem("savedData", JSON.stringify(objects));

Et vice versa:

objects = JSON.parse(localStorage.getItem("savedData")));

Ou vous pouvez ajouter plusieurs objets dans la même valeur localStorage:

localStorage.setItem("savedData", JSON.stringify([object1, object2 /*, etc*/]));
object1 = JSON.parse(localStorage.getItem("savedData"))[0];
object2 = JSON.parse(localStorage.getItem("savedData"))[1];

Voici la spécification de stockage DOM .

Vous pouvez également accéder à savedData comme ceci:

localStorage.savedData = "Hello world"
var foo = localStorage.savedData;

Cela peut être utilisé pour obtenir et définir les données, mais il est considéré comme moins "sûr" que getItem('name'); et setItem('name', 'value');

39
Cerbrus

Lire les variables:

var xyz = JSON.parse( localStorage.getItem( 'element' ) );

Stocker les variables:

localStorage.setItem( 'element' , JSON.stringify(xyz));

element est le nom de la variable de stockage local et xyz le nom de la variable js.

0
RRikesh

Vous pouvez utiliser l'analyse et la chaîne si le tableau n'est pas trop grand, mais si c'est le cas, alors vous allez ré-encoder l'ensemble de données pour chaque petit changement.

La bibliothèque de http://rhaboo.org améliore cela en donnant à chaque entrée de tableau sa propre entrée localStorage dans une liste chaînée. Cela signifie que vous pouvez effectuer des modifications assez efficacement. Contrairement à JSON, il honore également les propriétés nommées par texte et trois types différents d'entrées clairsemées (null, non défini et simplement absent).

BTW, j'ai écrit rhaboo.

0
Adrian May