2017-08-17 1 views
4

Je suis nouveau à JS et avant de demander j'ai cherché sur cette question, mais je n'ai toujours pas trouvé de réponse. Dans le LocalStorage je n'ai une clé définie comme suit:Comment stocker un objet dans un objet d'objets en JavaScript en utilisant LocalStorage?

key={ 
    -prob1: string 
    -prob2: Object 
     -prob21:string 
     -prob22:string 
} 

Comment puis-je stocker dans key un objet donné de la même structure que prob2 appelons-le obj, est-il comme ça? localStorage.setItem('key.prob2', obj); est-ce légal? ?

idées merci

Répondre

4

Vous ne pouvez pas stocker des objets à l'aide localStorage - vous ne pouvez y stocker des chaînes.

Ce que vous pouvez faire est de convertir votre objet en chaîne (en utilisant JSON.stringify), puis enregistrez-le.

obj = { 
    a: { 
    b: 'c' 
    } 
} 

localStorage.setItem('myobj', JSON.stringify(obj)); 

console.log(localStorage.getItem('myobj')); 
console.log(JSON.parse(localStorage.getItem('myobj'))); 

https://jsfiddle.net/or91wp56/

+0

merci pour la réponse, mais je veux obj stocker dans une propriété en myobj et non myobj se – user8244016

+1

vous pouvez toujours lire cet obj, insérer un nouvel objet dans l'une des propriétés, et le sauvegarder dans le localStorage – Dekel

+0

Je pensais que c'était facile, j'ai essayé depuis des heures, rien ne résout, comment faites-vous cela? – user8244016

1

Tout ce que vous seriez stocker avec localStorage.setItem('key.prob2', obj) est [object Object] car il ne peut stocker des chaînes, ce qui est sans doute pas ce que vous recherchez. J'utilise habituellement une petite classe wrapper autour localStorage à auto-linéariser/désérialiser, quelque chose comme:

class Storage { 
    static set(key, value) { 
     let serialized = value; 
     if (typeof value !== 'string') { 
     serialized = JSON.stringify(serialized); 
     } 
     localStorage.setItem(key, serialized); 
    } 
    static get(key) { 
     try { 
     return JSON.parse(localStorage.getItem(key)); 
     } catch (e) { 
     return localStorage.getItem(key); 
     } 
    } 
} 

Storage.set('foo', { bar: 'baz' }); 
console.log(Storage.get('foo').bar);