Node.jsでcsvファイルのデータをJSONに変える。
csvtojsonのページにあるようにコードを書く。
csvtojson
const csvFilePath='<path to csv file>'
const csv=require('csvtojson')
csv()
.fromFile(csvFilePath)
.then((jsonObj)=>{
//console.log(jsonObj);
// Async / await usage
const jsonArray=await csv().fromFile(csvFilePath);
これでの部分を自分のファイル名で実行しても、asyncが必要だとかいうエラーが出る。
Node.jsは非同期処理だから、そうしないとダメみたいなことを先輩に言われた。
Node.jsはバージョン7以降で、await/asyncがサポートされているので、そっちに変更する。
必要な部分をすべて書く。
var express = require('express');
var router = express.Router();
//csvファイルの読み込み
const csvFilePath='<path to csv file>'
const csv=require('csvtojson')
csv()
.fromFile(csvFilePath)
.then((jsonObj)=>{
//console.log(jsonObj);
})
const asyncFunc = async function() {
const jsonArray=await csv().fromFile(csvFilePath);
/*
実際に処理したい内容。
*/
}
asyncFunc();
module.exports = router;
console.log("start server");
これでjsonArrayの中にcsvファイルのデータがJSON形式の状態で保存される。
asyncFuncの処理は非同期処理となり、まっさきにconsole.log("start server")が処理される。
その後、非同期で処理が終わればめでたくayncFuncの内容が呼び戻される。
重要なのは、asyncFunkのファンクションの中に処理を書くことだと思う。勉強したばかりでイメージがわかないが、多分それでOK.