zoukankan      html  css  js  c++  java
  • node:json与csv互转

    【单个文件的转化】
     
    1.安装json2csv模块将json转成csv
     
    jsonToCSV.js
    var fs = require('fs');
    const Json2csvParser = require('json2csv').Parser;
    const fields = ['car', 'price', 'color', 'for'];
    
    let myData = fs.readFileSync('./data.json');
      
    const json2csvParser = new Json2csvParser({ fields });
    
    const csv = json2csvParser.parse(JSON.parse(myData));
    
    fs.writeFile("./data.csv", csv, function(err) {
        if(err) {
            return console.log(err);
        }
        
        console.log("The file was saved!");
    });
    data.json
    [
        {
          "car": "Audi",
          "price": 40000,
          "color": "blue",
          "for": ""
        }, {
          "car": "BMW",
          "price": 35000,
          "color": "black",
          "for": ""
        }, {
          "car": "Porsche",
          "price": 60000,
          "color": "green",
          "for": ""
        }
      ]
      
     
    2.安装csvtojson模块将csv转成json
     
    csvToJson.js
    const csvFilePath = "./data.csv"
    const csv=require('csvtojson');
    var fs = require('fs');
    
    csv()
    .fromFile(csvFilePath)
    .then((jsonObj)=>{
        jsonObj = JSON.stringify(jsonObj)
        fs.writeFile("./file/newData.json",jsonObj,'utf-8', function(err) {
            if(err) {
                return console.log(err);
            }
          
            console.log("The file was saved!");
        });
    })

    csv截图

    优化:

    【目录下多个文件转化】

     文件目录截图
     
     
    jsonToCSV.js
    let fs = require('fs');
    const curDirPath = 'F:/json2CSV/00originJson';
    const Json2csvParser = require('json2csv').Parser;
    
    fs.readdir(curDirPath, (err, files) => {
        if(err) {
            return console.log(err);
        }
        
        files.forEach(file => {
            
            fs.readFile(curDirPath + `/${file}`, 'utf-8', (err, data) => {
                if(err) {
                    return console.log(err);
                }
    
                let keyArr = [];
    
                data = JSON.parse(data);
    
                for(let i in data) {
                    keyArr.push(Object.keys(data[i]));
                }
    
                let keyArrSort = keyArr.sort((a, b) => {
                    return b.length - a.length
                })
    
                let fields = keyArrSort[0];
      
                const json2csvParser = new Json2csvParser({ fields });
    
                const csv = json2csvParser.parse(data);
         
                let csvFileName = file.replace(/.{1}[a-z]{1,}$/, ".csv");
    
                fs.writeFile(`./01csvFile/${csvFileName}`, csv, function(err) {
                    if(err) {
                        return console.log(err);
                    }
                    
                    console.log("The file was saved!");
                });
    
            });
        });
    });
    csvToJson.js
    const curDirPath = 'F:/json2CSV/01csvFile';
    const csv=require('csvtojson');
    let fs = require('fs');
    
    fs.readdir(curDirPath, (err, files) => {
        if(err) {
            return console.log(err);
        }
        
        files.forEach(fileName => {
            csv()
            .fromFile(`${curDirPath}/${fileName}`)
            .then((jsonObj)=>{
    
                jsonObj = JSON.stringify(jsonObj);
    
                let jsonFileName = fileName.replace(/.{1}[a-z]{1,}$/, ".json");
    
                fs.writeFile(`./02newJsonFile/${jsonFileName}`, jsonObj, 'utf-8', function(err) {
                    if(err) {
                        return console.log(err);
                    }
                
                    console.log("The file was saved!");
                });
            })
        });
    });


  • 相关阅读:
    迁移服务器遇到django-crontab不执行定时任务问题
    纯CSS3+DIV实现小三角形边框
    mysql密码错误-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes)
    收货地址下边的平行四边形彩色线条
    小程序导航栏全屏navigationStyle自定义导航栏,小程序轮播图导航栏
    移动宽带下Github网页上不去的解决办法
    线段比例式或等积式的证明思路
    两角不等的证明思路
    线段不等的证明思路
    两角相等的证明思路
  • 原文地址:https://www.cnblogs.com/yhquan/p/10879836.html
Copyright © 2011-2022 走看看