Skip to main content

实战一:csvtojson 模块使用

提示

100%源于实践

前言​

数字世界,一切都是数据,一切都是对象;json对象,就像开启数字世界的钥匙。csvtojson模块的强大功能,在回车的瞬间就被其效率惊叹到,再查看其结果更是让你满血沸腾,2500多行就是秒间,一眨眼的功夫完成,统一齐整的json格式。早之前,在使用python pandas功能时,曾经为其强大和灵活的功能所震过,记忆犹新;因此在使用“csvtojson”前,还想计划先用pandas将其转换为json 对象,保存文档交nodejs开发使用,当看到结果后,完全不需要了,已经完完全全超过想象的效果,甚至更强。在此推荐给小白们使用,特别时遇到有大量重复的,有统一数据格式的属性的,类似excel和csv文档数据需要程序处理的,这将大大提高效率,感受一下计算机带给我们的”秒“感。以下是本人使用的过程和心得,分享给大家。

第一步: npm install csvtojson​

安装成功后,同时引入“fs”模块,定义好“源csv文件路径”和要转换的目标“json对象文件路径”;一条指令(仅一条指令!),csv().from(path =“csv源文件”).then( =>Promise),按Promise 格式对json 对象文件,写入到目标路径(path=“json对象文件” );node执行后,命令行中显示“文件已保存”,即:转换成功。

printout

第二步:效果展示​

按json对象目标文件保存的路径,点击文件,其结果显示为一数组(LIST)文件,数组中每个元素均为相同格式的json对象。

list

  • csv 源文件格式:

  • 源文件中有四个属性,即Excel或csv文件里的4个列,分别为"full_name","memo","context"和"duration";每一行有四个用逗号隔开的字符。

  • 转换后的json对象文件格式:

  • 转换后,在csv里每一行的记录,按照对应属性,组成4个键值对(key-value)即:csv文件的4个列(属性)分别对应4个key;每个key-value对,value为每行里对应的值,通过csv文件中逗号”,“区隔分别赋值,如所示:

    利斯塔

  • 至此,我们就可以灵活使用json对象文件,按照属性选择,做下一步的开发使用;如:统计接龙时长,统计每天的接龙人次等。同时通过full_name属性,关联对应的user_id,"identity_number“等唯一标识,补充完整接龙记录。为后续的数据清理和运营创造了条件。

附录:源代码​

caution

百看不如一试,试过就知道啦!

// import module
const fs = require('fs');
const csv = require('csvtojson');

// 1.csv2json
const csvFilePath = './weixin_data/jlwx0612.csv';
const jsonFilePath = './weixin_data/jielong_wxin.json'; // 保存JSON

async function csv2json(csvFilePath,jsonFilePath){
csv()
.fromFile(csvFilePath)
.then((jsonObj) => {
// 将 JSON 对象写入文件
fs.writeFile(jsonFilePath, JSON.stringify(jsonObj), (error) => {
if (error) {
console.log(error);
} else {
console.log('文件已保存');
}
});
})
.catch((error) => {
console.log(error);
});
}