7

hey there i saw many questions about this topic but none of them fit my question. i'm trying to use localStorage to store a user custom preferences, i try put an json object into a localStorage key and use it later on. the object at the beginning looks like that:

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

the JSON.parse method returns an error, what i done is that:

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

the output is :

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

but i can't use it as local_storage.test.a why is that and what is the solution for that?

thx for the help :)

Edit!

Thanks to @Oli Soproni B, the solution is:

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);
2
  • what is local_storage.test.substring(0,0).substring(0,local_storage.length,-1)? Commented Feb 17, 2015 at 8:17
  • why are you calling stringify and parse Commented Feb 17, 2015 at 8:19

3 Answers 3

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
Sign up to request clarification or add additional context in comments.

1 Comment

Since you use JSON.stringify, than you should also use JSON.parse, no need for jQuery here. jQuery would return same anyway: if ( window.JSON && window.JSON.parse ) {return window.JSON.parse( data + "" );}
1

Localstorage stores string, not object. So you need to convert object to string while storing and converting it to object while retrieving.

To store:

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

To retrieve:

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

See DEMO here.

Comments

0

You used Json.stringify, because you need to store the data into localstorage as a string only.

you need to parse that again to JSON in order to use it as a JSON object,


but not like this

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

This tries to get a substring from your previously stored string, and again tries to stringify it.


You can get the stored string directly like this,

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

And then use, as the test object, as test: {a:"b",c:"d"}

1 Comment

i tried but it's returns an syntax error:Uncaught SyntaxError: Unexpected token a

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.