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

Converting string to a valid JSON object

本文关键字:有效 JSON 对象 转换 字符串      更新时间:2023-12-03

嘿,我看到了很多关于这个主题的问题,但没有一个符合我的问题。我试图使用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"}

但是我不能用它作为localstorage.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);
// 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

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

存储:

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

检索:

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

请参阅此处的演示

您使用了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"}