【发布时间】: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