我试图将json字符串存储在本地存储中,并在另一个函数中检索该值,但它没有按预期工作
用于存储
var data = '{"history":['+'{"keyword":"'+key+'","msg":"'+msg+'","ver":"'+ver+'"}]}';
localStorage.setItem("history",JSON.stringify(data));
重审
var historydata = JSON.parse(localStorage.getItem("history"));
尝试使用historydata.length及其显示57(将json数组视为单个字符串并显示其长度)我想要数组大小
答案 0 :(得分:2)
您尝试存储的变量已经是json编码的字符串。你不能再stringify
。
您可以删除那些'
并重新格式化json,然后它将是一个普通的json,然后您可以在其上调用stringify
。
var data = {"history":[{"keyword":key,"msg":msg,"ver":ver}]};
localStorage.setItem("history", JSON.stringify(data));
获取检索后的数组长度:
var historydata = JSON.parse(localStorage.getItem("history"));
console.log(historydata.history.length);
答案 1 :(得分:1)
您已有JSON字符串。在JSON.stringify之后,你会从字符串中获得一个字符串。
数组大小为1,因为一个对象中的内容。
var key = 'KEY', msg = 'MSG', ver = 'VER',
data = '{"history":[' + '{"keyword":"' + key + '","msg":"' + msg + '","ver":"' + ver + '"}]}',
obj = JSON.parse(data);
document.write(obj.history.length + '<br>');
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');
&#13;
也许你考虑更好地使用对象,比如对象文字:
var key = 'KEY', msg = 'MSG', ver = 'VER',
obj = { history: [{ keyword: key, msg: msg, ver: ver }] };
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');
&#13;