美女运营老师,天天找我改配置,我用node给她写了个脚本,终于安静了
美女运营老师,天天找我改配置,给她写了个脚本,终于安静了
事情的起因是,加入到新的小组中,在开发低代码后台管理页面的需求,需要配置一些下拉选项,后端因为一些特殊的原因,没法提供api接口,所以需要前端写成配置选项。这样问题就来了,新增了选项,但是没有给前端配置。美女运营老师都会来找开发,说:为什么新导入的数据没有显示啊,是不是有bug。。找了一圈发现是配置没加
我让运营老师,把新增数据表格给我配置下,丢过来新增数据上来就是1000+,手动加要哭死。于是我就想能否用脚本生成一个。
刚开始借用在线CSV转换JSON
把csv下载到本地,转换成json,返回数据倒是能返回,但是不符合运营老师的要求,key值需要是 key: ${data.value}-${data.key}
于是我就写了下面第一个简单版的node脚本
const fs = require('fs')
const csv = require('csv-parser');
const uidsfilePath = './uids.json';
const datas = [`复制生成的json数据`];
let newarr = [];
format(datas);
fs.writeFile(uidsfilePath, JSON.stringify(newarr), () => {
console.log('done')
})
const format = (results) => {
newarr = results.map(item => {
return {
label: `${item.value}-${item.key}`,
value: item.value
}
})
}
okok 到这里可以生成了。但是吧,想把这个事情还给运营老师,嘿
于是我又在这个基础上加上了读取CSV文件,格式化数据,输出JSON文件
使用 csv-parser读取 csv文件
csv-parser 是一个为Node.js设计的高效且流线型库,专注于快速解析CSV数据。它旨在提供最小的开销,保持简单轻量,特别适配于Node.js的流处理。此库遵循RFC 4180标准,并通过csv-spectrum的酸性测试套件,确保了对各种CSV变体的广泛兼容性和正确性。性能方面,csv-parser在处理大文件时表现出色,无论是带引号还是不带引号的CSV数据。
快速使用csv-parser
开始使用csv-parser,首先确保你的环境中已安装Node.js。接着,通过npm安装
csv-parser:
npm install csv-parser
示例代码
const fs = require('fs');
const parse = require('csv-parser');
fs.createReadStream('yourfile.csv')
.pipe(parse({ headers: true }))
.on('data', (row) => {
console.log(row);
})
.on('end', () => {
console.log('CSV file successfully processed');
});
第二版脚本
直接获取csv文件,生成输出JSON
const fs = require('fs')
const csv = require('csv-parser');
const csvfilePath = './新增UID.csv';
const uidsfilePath = './uids.json';
const results = [];
let newarr = [];
fs.createReadStream(csvfilePath)
.pipe(csv({ headers: true }))
.on('data', (data) => {
results.push(data);
})
.on('end',async () => {
await format(results);
fs.writeFile(uidsfilePath, JSON.stringify(newarr), () => {
console.log('done')
})
});
const format = (results) => {
newarr = results.map(item => {
if(item._0 === 'key' || item._1 === 'value') {
return {}
}
return {
label: `${item._1}-${item._0}`,
value: item._1
}
})
}
部分生成的数据
到这里又节省了一些时间,但是运营老师既不会安装node,也不会使用命令执行node CSVtoJSON.js,太复杂了不会弄。。。我说你提个需求吧,后面给您做成页面上传csv文件,返回JSON数据,点击一键复制好不好。
仅供娱乐,欢迎吐槽
未完待续,持续更新中...
感谢关注点赞评论~
来源:juejin.cn/post/7442489501590044672