Node.js读取本地CSV文件并且写入为JSON格式文件过程

 更新时间:2026年01月22日 10:10:32   作者:小火车况且况且  
本文介绍了使用Node.js v14.18.1读取CSV文件并处理中文乱码的方法,包括使用`fs.readdirSync`读取文件夹、`TextDecoder`处理编码、以及如何解析和处理CSV数据
  • 使用的Node.js版本是v14.18.1
  • 使用的Node.js版本是v14.18.1
  • 使用的Node.js版本是v14.18.1

下面使用到的API都是基于目前版本

1. 格式

1.1 项目文件夹格式

1.2.CSV文件格式

2. 操作

  • fs.readdirSync('./static')用于读取static文件夹下面的所有文件
  • dirs.filter(dir => /\.csv$/.test(dir)) 只需要以.csv结尾的文件
  • new TextDecoder('gbk').decode(file)因为node不能识别中文字符, 使用该方法就可以处理中文乱码问题
  • .split('\r\n')进行切割,就可以将每行数据分成一串字符串

  • getGBK[0].split(',') 获取表头, 用于组装数据

  • if (childList.length === 1) break说明该数据是空数据格式

外层循环时,需要注意i=1开始, 因为不需要遍历表头数据

完整代码

const fs = require('fs')
const dirs = fs.readdirSync('./static')

dirs.filter(dir => /\.csv$/.test(dir)).forEach(dir => {
    const file = fs.readFileSync(`./static/${fileName}`)
  	const getGBK = new TextDecoder('gbk').decode(file).split('\r\n')
  	// 获取表头, 用于组装数据
  	const headList = getGBK[0].split(',')
    const headLen = headList.length
    const gbkLen = getGBK.length
    // 遍历文件, 注意是从 i = 1 开始, 因为不需要表头
	for (let i = 1; i < gbkLen; i++) {
	    const gbkItem = getGBK[i]
	    const childList = gbkItem.split(',')
	    if (childList.length === 1) break // 说明该数据是空数据格式
	    const obj = {}
	    // 遍历表头数组
	    for (let j = 0; j < headLen; j++) {
	      const headItem = headList[j]
	      obj[headItem] = childList[j]
	    }
	    json.push(obj)
	  }
	  // 得到不需要文件后缀的名称
	  const getFile = fileName.split('.')[0]
	  // 写入文件数据
	  fs.writeFileSync(`./file/${getFile}.json`, JSON.stringify(json))
	})

最后结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • node.js中joi模块的基本使用方式

    node.js中joi模块的基本使用方式

    这篇文章主要介绍了node.js中joi模块的基本使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 理解nodejs的stream和pipe机制的原理和实现

    理解nodejs的stream和pipe机制的原理和实现

    本篇文章主要介绍了理解nodejs的stream和pipe机制的原理和实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Node.js编写组件的三种实现方式

    Node.js编写组件的三种实现方式

    这篇文章主要介绍了Node.js编写组件的三种实现方式,包括纯js实现、v8 API实现(同步&异步)、借助swig框架实现,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Nodejs监控事件循环异常示例详解

    Nodejs监控事件循环异常示例详解

    这篇文章主要给大家介绍了关于Nodejs监控事件循环异常的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Nodejs具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Nodejs从有门道无门菜鸟起飞必看教程

    Nodejs从有门道无门菜鸟起飞必看教程

    下面小编就为大家带来一篇Nodejs从有门道无门菜鸟起飞必看教程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • node.js开机自启动脚本文件

    node.js开机自启动脚本文件

    这篇文章主要介绍了node.js开机自启动脚本文件的方法和代码,这里分享给大家,有需要的小伙伴参考下吧
    2014-12-12
  • Node.js学习之地址解析模块URL的使用详解

    Node.js学习之地址解析模块URL的使用详解

    url模块是nodejs里面的一个简单的模块,下面这篇文章主要给大家介绍了关于Node.js学习之地址解析模块URL使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • node.js中的fs.writeFile方法使用说明

    node.js中的fs.writeFile方法使用说明

    这篇文章主要介绍了node.js中的fs.writeFile方法使用说明,本文介绍了fs.writeFile的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 利用Node.js制作爬取大众点评的爬虫

    利用Node.js制作爬取大众点评的爬虫

    相信每位用过大众点评的人都知道,大众点评上有很多美食餐馆的信息,所以这篇文章给大家分享利用Node.js实现爬取大众点评的爬虫,正好可以拿来练练手Node.js。感兴趣的可以参考借鉴。
    2016-09-09
  • 一文秒懂nodejs中的异步编程

    一文秒懂nodejs中的异步编程

    这篇文章主要介绍了深入理解nodejs中的异步编程,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论