【问题标题】:JSON returns string instead of array after parsingJSON解析后返回字符串而不是数组
【发布时间】:2018-09-20 18:36:00
【问题描述】:

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

预期输出:

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

这是实际的代码和逻辑:

第 1 步:读取 .csv,将值存储为数组并作为 JSON 字符串保存到 localStorage:

$(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["Test - Tokyo Tokyo"]:

输出是一个字符串:"["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(',') 将其转换回数组。

有没有更简单的解决方案?

【问题讨论】:

  • 试试JSON.parse(y["Test - Tokyo Tokyo"])
  • 请分享一条 csv 行。
  • 无法复制,请提供带有您的 csv 样本的小提琴或 Pen
  • 如果您提供 CSV 样本,我敢打赌您会在几分钟内得到更多答案。
  • 在为sofware_object 调用 JSON.stringify 之前,您是否为每个数组调用了JSON.stringify?在JSON.stringify 期间,数组不可能转换为字符串。唯一的方法是,如果您先将 stringify 数组值转换为字符串。例如,参见小提琴:jsfiddle.net/6o5yksb5/1

标签: javascript jquery arrays json stringify


【解决方案1】:

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

“Test - Tokyo Tokyo”的值是一个字符串

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2019-12-09
    • 2019-01-19
    • 2011-10-29
    • 2020-10-19
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多