Skip to content

Instantly share code, notes, and snippets.

@ahallora
Created April 8, 2020 11:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahallora/82bb979a5feebb40d98379e2d20087db to your computer and use it in GitHub Desktop.
Save ahallora/82bb979a5feebb40d98379e2d20087db to your computer and use it in GitHub Desktop.
Javascript function to convert a CSV list into list of JSON objects
const mapCsvToJson = (csv, delimiter) => {
const lines = csv.split("\n");
let dataArray = [];
let keys = [];
for (i = 0; i < lines.length; i++) {
const line = lines[i];
const data = line.split(delimiter);
if (i === 0) {
keys = data;
} else {
let item = {};
for (x = 0; x < data.length; x++) {
item = {
...item,
[keys[x]]: data[x],
};
}
dataArray.push(item);
}
}
return dataArray;
};
// use case
const csv = "fname;age\nAnders;34\nBrian;35\nCasper;35";
const delimiter = ";";
const list = mapCsvToJson(csv, delimiter)
/* will produce:
[
{
"fname": "Anders",
"age": 34
},
{
"fname": "Brian",
"age": 35
},
{
"fname": "Casper",
"age": 35
}
]
*/
@ahallora
Copy link
Author

ahallora commented Apr 8, 2020

And the reverse (single level) converter from JSON to CSV:

const JsonListToCsv = (arr, delimiter = ";") => {
    let header = [];
    let rows = [];

    for (i = 0; i < arr.length; i++) {
        if (i === 0) {
            header = Object.keys(arr[i]);
        } else {
            const row = Object.values(arr[i]).join(delimiter);
            rows.push(row);
        }
    }

    const csv = header.join(delimiter) + "\n" + rows.join("\n");

    return csv;
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment