Skip to content

Instantly share code, notes, and snippets.

@nhattruongniit
Created February 14, 2022 10:59
Show Gist options
  • Select an option

  • Save nhattruongniit/f896172ef658db45afee526895ce13a4 to your computer and use it in GitHub Desktop.

Select an option

Save nhattruongniit/f896172ef658db45afee526895ce13a4 to your computer and use it in GitHub Desktop.
csv-to-json
export default function (file, delimiter) {
return new Promise((resolve) => {
const fileReader = new FileReader();
fileReader.readAsText(file);
fileReader.onload = function (event) {
let finalJson = [];
const textData = event.target.result;
let rowArr = textData.split(/\r?\n|\r/) || [];
rowArr = rowArr.filter((row) => row);
const csvHeaders = rowArr[0]?.split(delimiter) || [];
finalJson = rowArr.slice(1, rowArr.length).map((row) => {
const cellArr = row.split(delimiter);
const obj = {};
csvHeaders.forEach((header, index) => {
header = header?.trim() || '_EMPTY';
if (header.charAt(0) === '"' && header.charAt(header.length - 1) === '"') {
header = header.slice(1, -1).replace(/""/g, '"');
}
cellArr[index] = cellArr[index]?.trim();
if (cellArr[index]?.charAt(0) === '"' && cellArr[index].charAt(cellArr[index].length - 1) === '"') {
cellArr[index] = cellArr[index].slice(1, -1).replace(/""/g, '"');
}
obj[header] = cellArr[index];
});
return obj;
});
resolve(finalJson);
};
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment