最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)示例

    這篇文章主要為大家介紹了服務端nodejs抓取jsonp接口數(shù)據(jù)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • node+koa2+mysql+bootstrap搭建一個前端論壇

    node+koa2+mysql+bootstrap搭建一個前端論壇

    本篇文章通過實例給大家分享了用node+koa2+mysql+bootstrap搭建一個前端論壇的步驟,有需要的朋友參考下。
    2018-05-05
  • 基于Node實現(xiàn)可以操作MySQL的接口

    基于Node實現(xiàn)可以操作MySQL的接口

    這篇文章主要介紹了用Node寫個可以操作MySQL的接口,以前也用Node寫過接口,但不涉及數(shù)據(jù)庫操作,而我們發(fā)現(xiàn),后端寫接口,基本都繞不開數(shù)據(jù)庫操作,感覺不寫一個能操作數(shù)據(jù)庫的接口,就不算真正意義上學會了寫接口,那我們今天就學習一下,如何寫一個可以操作數(shù)據(jù)庫的接口
    2024-05-05
  • nodejs中的http模塊與npm模塊使用

    nodejs中的http模塊與npm模塊使用

    這篇文章主要介紹了nodejs中的http模塊與npm模塊使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • node.js使用fs讀取文件出錯的解決方案

    node.js使用fs讀取文件出錯的解決方案

    在本篇文章里我們給大家?guī)硪黄P于node.js使用fs讀取文件出錯的解決辦法,有需要的朋友們參考下。
    2019-10-10
  • nvm版本導致npm?install報錯Unexpected?token?'.'的解決辦法

    nvm版本導致npm?install報錯Unexpected?token?'.'的解決辦法

    最近做項目遇到npm install 的問題,下面這篇文章主要給大家介紹了關于nvm版本導致npm?install報錯Unexpected?token?'.'的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • package.json的版本號更新優(yōu)化方法

    package.json的版本號更新優(yōu)化方法

    這篇文章主要為大家介紹了package.json的版本號更新優(yōu)化方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Node.js express的基本使用詳解

    Node.js express的基本使用詳解

    Express是基于Node.js的輕量級Web框架,封裝了HTTP服務、路由管理、中間件等核心功能,簡化了Web應用和API開發(fā),這篇文章給大家介紹Node.js express的基本使用,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • nodejs實現(xiàn)解析xml字符串為對象的方法示例

    nodejs實現(xiàn)解析xml字符串為對象的方法示例

    這篇文章主要介紹了nodejs實現(xiàn)解析xml字符串為對象的方法,涉及nodejs針對xml格式字符串的解析與轉換相關操作技巧,需要的朋友可以參考下
    2018-03-03
  • 運行Node.js的IIS擴展iisnode安裝配置筆記

    運行Node.js的IIS擴展iisnode安裝配置筆記

    這篇文章主要介紹了運行Node.js的IIS擴展iisnode安裝配置筆記,iisnode的擴展可以把Node.js程序托管到IIS,托管之后也意味著可以使用IIS里面的各種功能,需要的朋友可以參考下
    2015-03-03

最新評論

日喀则市| 双峰县| 玛纳斯县| 金寨县| 宁夏| 渑池县| 绥中县| 弥渡县| 赤峰市| 屏山县| 屯留县| 宜兴市| 柳河县| 禹州市| 榕江县| 贵州省| 景泰县| 河间市| 房产| 靖边县| 柞水县| 普格县| 富顺县| 荣成市| 奉化市| 家居| 丹巴县| 新野县| 漾濞| 石首市| 潞城市| 金昌市| 江西省| 盐津县| 彰化县| 靖安县| 涪陵区| 城固县| 库车县| 东阿县| 桂林市|