Converting JSON object to CSV format in JavaScript
you can try as
$(document).ready(function () { // Create Object var items = [ { name: "Item 1", color: "Green", size: "X-Large" }, { name: "Item 2", color: "Green", size: "X-Large" }, { name: "Item 3", color: "Green", size: "X-Large" }]; // Convert Object to JSON var jsonObject = JSON.stringify(items); // Display JSON $('#json').text(jsonObject); // Convert JSON to CSV & Display CSV $('#csv').text(ConvertToCSV(jsonObject)); });
and a function ConvertToCSV
// JSON to CSV Converter function ConvertToCSV(objArray) { var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; var str = ''; for (var i = 0; i < array.length; i++) { var line = ''; for (var index in array[i]) { if (line != '') line += ',' line += array[i][index]; } str += line + '\r\n'; } return str; }
Here is my solution
function arrayToCSV(objArray) { const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray; let str = `${Object.keys(array[0]).map(value => `"${value}"`).join(",")}` + '\r\n'; return array.reduce((str, next) => { str += `${Object.values(next).map(value => `"${value}"`).join(",")}` + '\r\n'; return str; }, str); }
Example:
let arr = [{name: "Essa", age: 25}];console.log(arrayToCSV(arr));
Probably more elegant and the simplest solution
function convertToCSV(arr) { const array = [Object.keys(arr[0])].concat(arr) return array.map(it => { return Object.values(it).toString() }).join('\n')}console.log( convertToCSV( [ { id: 1, name: 'Foo', timestamp: new Date() }, { id: 2, name: 'Bar', timestamp: new Date() }, { id: 3, name: 'Baz', timestamp: new Date() } ] ))