JavaScriptでCSVファイルを読み込んでJSONを作る簡単なサンプルを示します。
const csvFilePath = '[CSVファイルのパス]'
const jsonFilePath = '[JSONファイルのパス]'
const csv = require('csvtojson')
const moment = require('moment')
const fs = require('fs')
csv()
.fromFile(csvFilePath)
.then((rows)=>{
rows = rows.map((row) => {
row.id = new Number(row.id)
row.success = new Boolean(row.success)
row.registrationDate = moment(row.registrationDate).format("YYYY-MM-DD")
return row
})
fs.writeFile(jsonFilePath, JSON.stringify(rows, null, 2), (err) => {
if (err) {
throw err;
}
console.log("JSON generated.");
})
})
csvtojsonを使うのが簡単です。
CSVファイルに次の内容を用意すると、
id,success,registrationDate
1,true,2022/01/03
2,false,2022/08/30
3,true,2022/12/13
次のJSONファイルが生成されます。
[
{
"id": 1,
"success": true,
"registrationDate": "2022-01-03"
},
{
"id": 2,
"success": true,
"registrationDate": "2022-08-30"
},
{
"id": 3,
"success": true,
"registrationDate": "2022-12-13"
}
]
map処理の中で、各行のデータ(row)に対して、id
は数値として扱い、success
は論理値として扱い、registrationDate
は日付のフォーマット変換を行うためにnew Number()
、new Boolean()
、moment().format("YYYY-MM-DD")
にそれぞれ通しています。これらを通さないと、idやsuccessはそれぞれ文字列としてJSONに出力されます。文字列として出力というのは、次のように"(ダブルクォート)で囲まれた値で出力されることを指します。
[
{
"id": "1",
"success": "true",
"registrationDate": "2022-01-03"
},
{
"id": "2",
"success": "true",
"registrationDate": "2022-08-30"
},
{
"id": "3",
"success": "true",
"registrationDate": "2022-12-13"
}
]