解析后,JSON返回字符串而不是数组

时间:2018-04-11 02:25:01

标签: javascript jquery arrays json stringify

我有一个包含2列的.csv文件 - 公司和标准软件appID。我读了每一行并使用公司作为键,然后值是appID数组。

预期产出:

{"Company A" : ["1","2","3"], "Company B" : ["2","3"]}

这是实际的代码和逻辑:

步骤1:读取.csv,将值存储为数组并以localStorage的形式保存为JSON字符串:

$(document).load('./software/software_standard.csv',function(data){
    var lines = data.split('\n');
    var software_object = {};
    for(i=1;i<lines.length;i++) {
        currentline = lines[i].split(',');
        if(software_object [currentline[0]]){
            var array = software_object[currentline[0]];
            array.push(currentline[1]);
        }
        else {
            var array = new Array();
            array.push(currentline[1])
            software_object[currentline[0]] = array;
        }
    }
    var JSON_string = JSON.stringify(software_object);
    localStorage.setItem('object',JSON_string);
})

第2步:在localStorage上获取项目 - var x = LocalStorage.getItem('object'):

{"Test - Tokyo Tokyo":"[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]","Account 7":"[\"1\"]","BPI":"[\"6\"]","":"[\"\"]"}

第3步:解析返回的项目 - var y = JSON.parse(x):

{Test - Tokyo Tokyo: "["1", "2", "3", "4", "5", "6", "7", "8", "9"]", Account 7: "["1"]", BPI: "["6"]", "": "[""]"}

第4步:访问第一个键 - y [“测试 - 东京东京”]:

输出是一个字符串:"["1", "2", "3", "4", "5", "6", "7", "8", "9"]"

问题:

预期输出应该是数字数组 - 而不是字符串。我已经扫描了Stackoverflow但找不到完全匹配。我试图通过删除3个字符“,[和]来获得这样的值来解决这个问题:

y["Test - Tokyo Tokyo"] = "1, 2, 3, 4, 5, 6, 7, 8, 9"

然后使用.split(',')将其转换回数组。

这有更简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

{"Test - Tokyo Tokyo":"[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]","Account 7":"[\"1\"]","BPI":"[\"6\"]","":"[\"\"]"}

&#34;测试的价值 - 东京东京&#34;是一个字符串

如果它是一个数组,它将是这样的:

{"Test - Tokyo Tokyo":["1", "2", "3", "4", "5", "6", "7", "8", "9"],"Account 7":["1"],"BPI":["6"],"":[""]}