i have database data in plans text file like the format below
database.txt:
4233 ABAT POULET CHAQUET GH0012 BOUCHERIE / CHARCUTERIE VOLAILLE ABAT 4100 FERME 4.57 0 1 5.8863 0
384 ABRICOT PASTEU 200G LOU PRUNEL LO0009 FRUITS / LEGUMES FRUITS SECS ABRICOT 2200 FERME 2.43 20 1 3.8483 0
52 ABRICOT PAYS DN0116 FRUITS / LEGUMES FRUITS ABRICOT 6112 DANIV 1.80 5 1 4.5403 0
1979 ABRICOT SEC 250G RAPUNZEL 64AB250 FRUITS / LEGUMES FRUITS SECS ABRICOT 2200 RAPUN 2.28 6 1 3.1090 0
122 ABRICOT SEC TURQUIE VRAC 6KG R BY1002 FRUITS / LEGUMES FRUITS SECS ABRICOT 2200 BIOPA 5.79 6 1 8.7109 0
i need to to convert to json data using nodejs like this format:
[
{
"A1": "4233",
"A2": "ABAT POULET CHAQUET",
"A3": "GH0012",
"A4": "BOUCHERIE / CHARCUTERIE",
...
}
]
i test this ida It doesn't work
var cells = str.split('\n').map(function (el) { return el.split(/\s+/); });
var headings = cells.shift();
var obj = cells.map(function (el) {
var obj = {};
for (var i = 0, l = el.length; i < l; i++) {
obj[headings[i]] = isNaN(Number(el[i])) ? el[i] : +el[i];
}
return obj;
});
var json = JSON.stringify(obj);
The only mistake in your code was the regex (it was splitting by single or more spaces but you needed it to split by 2 or more spaces) and in the map function
Here is the correct code
var cells = str.split("\n").map(function (el) {
return el.split(/\s{2,}/);
});
var obj = cells.map(function (el) {
var obj = {};
for (var i = 0, l = el.length; i < l; i++) {
obj["A" + (i + 1)] = el[i];
}
return obj;
});
var json = JSON.stringify(obj, null, 4);
I would recommend using some tsv parser like (https://www.npmjs.com/package/papaparse) instead of using regex to split columns