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

7

嗨,我看到很多关于这个话题的问题,但没有一个符合我的问题。 我正在尝试使用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,为什么?有什么解决方法吗?
感谢@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);

local_storage.test.substring(0,0).substring(0,local_storage.length,-1) 是什么? - Arun P Johny
为什么要调用 stringify 和 parse? - Arun P Johny
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

既然您使用了JSON.stringify,那么您也应该使用JSON.parse,这里不需要jQuery。jQuery的返回值也是相同的:if (window.JSON && window.JSON.parse) {return window.JSON.parse(data + "");} - skobaljic

1
本地存储仅能存储字符串,无法存储对象。因此,在存储时需要将对象转换为字符串,在检索时需要将其转换回对象。 存储方法:
localStorage.setItem("key",JSON.stringify(obj));

要检索:

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

在此处查看演示。


0

你使用了 Json.stringify,因为你需要将数据仅以字符串形式存储到本地存储中。

你需要再次使用 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"}


1
我尝试了,但它返回一个语法错误:Uncaught SyntaxError: Unexpected token a。 - benjah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接