注册
web

美女运营老师,天天找我改配置,我用node给她写了个脚本,终于安静了

美女运营老师,天天找我改配置,给她写了个脚本,终于安静了


事情的起因是,加入到新的小组中,在开发低代码后台管理页面的需求,需要配置一些下拉选项,后端因为一些特殊的原因,没法提供api接口,所以需要前端写成配置选项。这样问题就来了,新增了选项,但是没有给前端配置。美女运营老师都会来找开发,说:为什么新导入的数据没有显示啊,是不是有bug。。找了一圈发现是配置没加


请在此添加图片描述


我让运营老师,把新增数据表格给我配置下,丢过来新增数据上来就是1000+,手动加要哭死。于是我就想能否用脚本生成一个。


刚开始借用在线CSV转换JSON


在线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

0 个评论

要回复文章请先登录注册