easy-csv-parser
Version:
easy-csv-parser simplifies CSV data parsing in Node.js. Fetch, extract headers, and convert CSV files from URLs to JavaScript objects and JSON effortlessly. Ideal fordevelopers, data analysis, automation, and more.
75 lines (63 loc) • 1.68 kB
JavaScript
const axios = require("axios");
async function csvToObject(link) {
try {
const response = await axios.get(link);
if (!response.data || response.data.length === 0) {
return {
status: 400,
message: "Your file might be empty"
};
}
const originData = response.data;
const lines = originData.split("\n");
const headerKeys = lines[0].split(",").map((key) => key.trim());
const result = [];
for (let i = 1; i < lines.length - 1; i++) {
let values;
values = lines[i].split(",");
// console.log(values);
const obj = {};
for (let j = 0; j < headerKeys.length; j++) {
obj[headerKeys[j]] =
j == headerKeys.length - 1 ? values[j].split("\r")[0] : values[j];
}
result.push(obj);
}
return {
status: 200,
data: result
};
} catch (error) {
return {
status: 500,
message: `Error fetching or processing CSV: ${error}`
};
}
}
async function csvToJSON(link) {
const csvToObj = await csvToObject(link);
if (csvToObj.status === 500) {
return {
status: 500,
message: `Error fetching or processing CSV`
};
}
if (csvToObj.status === 200) {
return {
status: 200,
data: JSON.stringify(csvToObj)
};
}
if (csvToObj.status === 400) {
return {
status: 400,
message: "Your file might br empty"
};
}
}
csvToObject(
"https://res.cloudinary.com/dyy7ynyzb/raw/upload/v1693837919/dummy_mffrz5.csv"
).then((res) => {
console.log(res);
});
module.exports = { csvToObject, csvToJSON };