2015-02-17 19 views
5

hey, ho visto molte domande su questo argomento ma nessuna di esse è adatta alla mia domanda. sto provando ad usare localStorage per memorizzare le preferenze personalizzate dell'utente, provo a mettere un oggetto json in una chiave localStorage e ad usarlo in seguito. l'oggetto all'inizio sembra che:Conversione di una stringa in un oggetto JSON valido

Object {test: "{a:"b",c:"d"}"} 

il metodo JSON.parse restituisce un errore, quello che ho fatto è che:

var local_storage = getAll(); 
$.parseJSON(JSON.stringify(local_storage.test.substring(0,0).substring(0,local_storage.length,-1))); 

l'output è:

{a:"b",c:"d"} 

ma io non posso usarlo come local_storage.test.a perché è questo e qual è la soluzione?

thx per l'aiuto :)

Modifica!

Grazie alla @Oli Soproni B, la soluzione è:

var key = {a:"b",c:"d"}; 
var l = JSON.stringify(key); 
localStorage.setItem('test',l); 
var local_storage = $.parseJSON(localStorage.getItem('test')); 
console.log(local_storage); 
console.log(local_storage.a); 
+0

ciò che è 'local_storage.test.substring (0,0) .Substring (0, local_storage.length, -1) '? –

+0

perché stai chiamando stringify e parsing –

risposta

3
// data 
    var k = {a:"b", c: "d"}; 
    // stringify json 
    var l = JSON.stringify(k); 
    // set item to local storage 
    localStorage.setItem('test', l); 

    // get item to local storage and parse data 
    var local_storage = $.parseJSON(localStorage.getItem('test')); 

    console.log(local_storage); 

    Object {a: "b", c: "d"} 

    console.log(local_storage.a); 

    prints b 

// or use 
var local_storage = JSON.parse(localStorage.getItem('test')); 
// in parsing the stringify json data 
+0

Dato che usi 'JSON.stringify', allora dovresti usare anche' JSON.parse', non c'è bisogno di jQuery qui . jQuery restituirebbe comunque lo stesso: 'if (finestra.JSON && window.JSON.parse) {return window.JSON.parse (data + "");} ' – skobaljic

+2

funziona come una magia :) buongiorno amico! – benjah

+1

funziona come una magia !! –

0

hai usato Json.stringify, perché è necessario per memorizzare i dati in localStorage come solo una stringa.

è necessario parse che ancora una volta a JSON al fine di utilizzarlo come un oggetto JSON,


ma non come questo

JSON.stringify(local_storage.test.substring(0,0).substring(0,local_storage.length,-1)) 

Questo cerca di ottenere una stringa dal vostro precedentemente memorizzato stringa, e tenta nuovamente di renderizzarlo.


è possibile ottenere la stringa memorizzata direttamente in questo modo,

var local_storage = getAll(); 
var test=JSON.parse(local_storage.test); 

e quindi utilizzare, come l'oggetto di prova, come test: {a:"b",c:"d"}

+1

ho provato ma viene restituito un errore di sintassi: Uncaught SyntaxError: token imprevisto a – benjah

1

negozi LocalStorage stringa, non oggetto. Quindi è necessario convertire l'oggetto in stringa mentre lo si archivia e lo converte in oggetto durante il recupero.

Per memorizzare:

localStorage.setItem("key",JSON.stringify(obj)); 

Per recuperare:

obj = JSON.parse(localStorage.getItem(obj)); 

See DEMO here.

Problemi correlati