-
Notifications
You must be signed in to change notification settings - Fork 2
/
csv_parser.js
70 lines (54 loc) · 1.22 KB
/
csv_parser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const fs = require("fs");
class Object_template {
constructor(keys) {
this.keys = keys;
this.template = this.createTemplate()
}
createTemplate() {
let obj = {}
this.keys.forEach(k => {
obj[k] = undefined
})
return obj
}
createObject(row) {
const rawValues = row.split(";");
const keys = Object.keys(this.template)
const clone = {
...this.template
}
rawValues.forEach((v, i) => {
if (v.length == 0) {
clone[keys[i]] = undefined
} else {
clone[keys[i]] = v
}
})
return clone
}
}
fs.readFile("sportQuiz.csv", (err, data) => {
if (err) throw err;
readCSV(data)
});
function readCSV(data) {
const csv = data
.toString()
.replace(/\r/g, "");
// console.log(csv)
const rowsArray = csv.split(/\n/g)
const namingsRow = rowsArray
.shift()
.toLowerCase()
.replace(/\s/g, "_")
.split(";")
const template = new Object_template(namingsRow)
const finalData = rowsArray.map(r => {
return template.createObject(r)
})
const finalJSON = JSON.stringify(finalData)
fs.writeFile('sportQuiz.json', finalJSON, (err) => {
if (err) throw err;
console.log('The file has been saved!');
});
}