Node.js讀取本地CSV文件并且寫入為JSON格式文件過程
更新時間:2026年01月22日 10:10:32 作者:小火車況且況且
本文介紹了使用Node.js v14.18.1讀取CSV文件并處理中文亂碼的方法,包括使用`fs.readdirSync`讀取文件夾、`TextDecoder`處理編碼、以及如何解析和處理CSV數(shù)據(jù)
- 使用的
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')進行切割,就可以將每行數(shù)據(jù)分成一串字符串

getGBK[0].split(',')獲取表頭, 用于組裝數(shù)據(jù)

if (childList.length === 1) break說明該數(shù)據(jù)是空數(shù)據(jù)格式
外層循環(huán)時,需要注意i=1開始, 因為不需要遍歷表頭數(shù)據(jù)
完整代碼
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')
// 獲取表頭, 用于組裝數(shù)據(jù)
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 // 說明該數(shù)據(jù)是空數(shù)據(jù)格式
const obj = {}
// 遍歷表頭數(shù)組
for (let j = 0; j < headLen; j++) {
const headItem = headList[j]
obj[headItem] = childList[j]
}
json.push(obj)
}
// 得到不需要文件后綴的名稱
const getFile = fileName.split('.')[0]
// 寫入文件數(shù)據(jù)
fs.writeFileSync(`./file/${getFile}.json`, JSON.stringify(json))
})
最后結果

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
服務端nodejs抓取jsonp接口數(shù)據(jù)實現(xiàn)示例
這篇文章主要為大家介紹了服務端nodejs抓取jsonp接口數(shù)據(jù)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
node+koa2+mysql+bootstrap搭建一個前端論壇
本篇文章通過實例給大家分享了用node+koa2+mysql+bootstrap搭建一個前端論壇的步驟,有需要的朋友參考下。2018-05-05
nvm版本導致npm?install報錯Unexpected?token?'.'的解決辦法
最近做項目遇到npm install 的問題,下面這篇文章主要給大家介紹了關于nvm版本導致npm?install報錯Unexpected?token?'.'的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-07-07
nodejs實現(xiàn)解析xml字符串為對象的方法示例
這篇文章主要介紹了nodejs實現(xiàn)解析xml字符串為對象的方法,涉及nodejs針對xml格式字符串的解析與轉換相關操作技巧,需要的朋友可以參考下2018-03-03

