javascript - JS:文本文件到 JSON
问题描述
我是 JS 的完整初学者,需要一些帮助。我有一个看起来像这样的文本文件:
JOBID,NAME,USER,NODELIST,CPUS,STATE,REASON
2527,_DP-2-Q-095-84-1-50.job,loe_mk,,4,PENDING,launch failed requeued held
2528,_Q-095-76-2-05.job,fr_tho,,4,PENDING,launch failed requeued held
2515,_DC-3-V-095-76-0-10.job,pi_tim,node01,4,RUNNING,None
因此,JOBID、NAME 等是以下值的名称。
现在我想把它解析成一个 JSON 对象。我试着这样做:
var jdata = new Array();
jdata = data.toString().split('\n');
jsonstring = JSON.stringify(jdata);
fs.writeFile('out/data.json', jsObj, (err) => {
if (err) throw err;
});
但结果是没有 JSON 对象,对吧?我不知何故需要将参数相互连接起来,所以它看起来像:
{
"JOBID": 2527,
"NAME": '_DP-2-Q-095-84-1-50.job',
...
}
有人可以告诉我如何正确转换它,或者甚至不可能这样?
谢谢你
解决方案
您已经正确开始,但您不能简单地使用它JSON.stringify(jdata);
来转换为 JSON。纯 JS 中的一个例子是这样的:
//Load in Input
var input = `JOBID,NAME,USER,NODELIST,CPUS,STATE,REASON
2527,_DP-2-Q-095-84-1-50.job,loe_mk,,4,PENDING,launch failed requeued held
2528,_Q-095-76-2-05.job,fr_tho,,4,PENDING,launch failed requeued held
2515,_DC-3-V-095-76-0-10.job,pi_tim,node01,4,RUNNING,None`;
//Split into Lines
var data = input.split("\n");
//Get all the header values
var header = input.split("\n")[0].split(",");
//Init Output Array
var output = [];
//For every row except the first (1...n)
for(var i=1;i<data.length;i++){
//Get all the values
var values = data[i].split(",");
var obj = {};
//For every value in the header
for(var j=0;j<header.length;j++){
//obj[JOBID] = 2527
obj[header[j]] = values[j];
}
//Push to output
output.push(obj);
}
现在的输出将等于您的对象数组。然后,您可以像以前一样保存它。
// [{"JobID": 2527, "...},{..}...]
jsonstring = JSON.stringify(output);
fs.writeFile('out/data.json', jsObj, (err) => {
if (err) throw err;
});
推荐阅读
- c - 检查 pthread_cond_t 的值
- javascript - 使用 reddit json 时映射未定义
- python - 如何从从 JSON 文件中提取的日期值中删除时间?
- python - 基本python作业指导
- python - 如何在熊猫的许多 csv 文件夹中获取列的平均值?
- java - 使用 JAVA 和正则表达式查找 URL 的一部分
- ios - 已下载 PDF 文件但找不到
- google-colaboratory - google colab 是否永久更改文件
- swipe - ios 13 中的平移事件未按预期运行
- c# - 从阿拉伯语单词的第一个字符串中删除“ال”或“اَلْ”或“الْ”或“اَل”