javascript中的json数组长度正在缩短字符串长度

时间:2015-12-13 08:45:28

标签: javascript arrays json

我试图将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数组视为单个字符串并显示其长度)我想要数组大小

2 个答案:

答案 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;
&#13;
&#13;

也许你考虑更好地使用对象,比如对象文字:

&#13;
&#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;
&#13;
&#13;