tengo datos de la base de datos en un archivo de texto de planes como el siguiente formato
base de datos.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
Necesito convertir a datos json usando nodejs como este formato:
[ { "A1": "4233", "A2": "ABAT POULET CHAQUET", "A3": "GH0012", "A4": "BOUCHERIE / CHARCUTERIE", ... } ]
pruebo este ida no funciona
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);
El único error en su código fue la expresión regular (se dividía en uno o más espacios, pero necesitaba que se dividiera en 2 o más espacios) y en la función de mapa
Aquí está el código correcto
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);
Recomendaría usar algún analizador tsv como ( https://www.npmjs.com/package/papaparse ) en lugar de usar expresiones regulares para dividir columnas