将字符串转换为有效的JSON对象

时间:2015-02-17 08:15:27

标签: javascript jquery json

嘿,我看到很多关于这个话题的问题,但没有一个适合我的问题。 我试图使用localStorage存储用户自定义首选项,我尝试将一个json对象放入localStorage键并稍后使用它。 一开始的对象看起来像这样:

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

JSON.parse方法返回错误,我所做的是:

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

输出是:

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

但是我不能将它用作local_storage.test.a为什么会这样,解决方案是什么?

thx求助:)

编辑!

感谢@Oli Soproni B,解决方案是:

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);

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Localstorage存储字符串,而不是对象。因此,您需要在检索时将对象转换为字符串,并将其转换为对象。

存储:

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

要检索:

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

See DEMO here.

答案 2 :(得分:0)

您使用了Json.stringify,因为您需要将数据作为字符串存储到localstorage中。

您需要parse再次JSON才能将其用作JSON对象,


喜欢这个

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

这会尝试从先前存储的字符串中获取子字符串,并再次尝试对其进行字符串化。

<小时/> 您可以直接获取存储的字符串,

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

然后使用,作为测试对象,test: {a:"b",c:"d"}