Converting Json Object to CSV Format in JavaScript

How to convert JSON to CSV format and store in a variable

Ok I finally got this code working:

<html>
<head>
<title>Demo - Covnert JSON to CSV</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>

<script type="text/javascript">
// 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;
}

// Example
$(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));
});
</script>
</head>
<body>
<h1>
JSON</h1>
<pre id="json"></pre>
<h1>
CSV</h1>
<pre id="csv"></pre>
</body>
</html>

Thanks alot for all the support to all the contributors.

Praney

Convert json to csv with js

You can try this

function downloadCSV () {
let arr = [{"am":{"a3":2,"a1":5,"a2":2},"zul":{"mer":1,"spi":1,"aut":1,"inf2":1,"int":1,"infl":1,"les":1},"kaab": {"ka11":6,"ka12":6,"ka10":6},"kg3":"fdsf","ges":1,"alt":3,"kawe":{"ka9":4,"ka7":5,"ka8":5},"kaak":{"ka2":4,"ka3":5,"ka4":5,"ka1":4,"ka5":3,"ka6":5},"kg4":2,"kg1":5,"eink":"","kg2":4,"soz2":"","solz":"2","ae":{"a6":2,"a5":2,"a4":6}}, {"am":{"a3":2,"a1":5,"a2":2},"zul":{"mer":1,"spi":1,"aut":1,"inf2":1,"int":1,"infl":1,"les":1},"kaab": {"ka11":6,"ka12":6,"ka10":6},"kg3":"fdsf","ges":1,"alt":3,"kawe":{"ka9":4,"ka7":5,"ka8":5},"kaak":{"ka2":4,"ka3":5,"ka4":5,"ka1":4,"ka5":3,"ka6":5},"kg4":2,"kg1":5,"eink":"","kg2":4,"soz2":"","solz":"2","ae":{"a6":2,"a5":2,"a4":6}} ]; var keys = []; var values = []; function getKeys(data, k = '') { for (var i in data) { var rest = k.length ? '_' + i : i if (typeof data[i] == 'object') { if (!Array.isArray(data[i])) { getKeys(data[i], k + rest) } } else keys.push( k+ rest) } } function getValues(data, k = '') { for (var i in data) { var rest = k.length ? '' + i : i if (typeof data[i] == 'object') { if (!Array.isArray(data[i])) { getValues(data[i], k + rest) } } else values.push(data[rest]) } }
getKeys(arr[0]) var value=""; arr.forEach(x=>{ values=[]; getValues(x); value+=values.join(";")+"\r\n"; }) let result = keys.join(";")+"\r\n"+value; let fileToSave = new Blob([result], { type: "csv", name: 'data.csv' }); saveAs(fileToSave, 'data.csv'); }
<script src="https://cdn.jsdelivr.net/npm/file-saver@2.0.2/dist/FileSaver.min.js"></script><button onclick="downloadCSV()">download csv</button>

Javascript / convert json to csv

Example in JSFiddle : http://jsfiddle.net/FLR4v/

Dependencies :

  • Underscorejs http://underscorejs.org/underscore-min.js
  • Momentjs http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/moment.min.js

The function

 /**
* Return a CSV string from an array of json object
*
* @method JSONtoCSV
* @param {Object} jsonArray an array of json object
* @param {String} [delimiter=;] delimiter
* @param {String} [dateFormat=ISO] dateFormat if a date is detected
* @return {String} Returns the CSV string
**/
function JSONtoCSV(jsonArray, delimiter, dateFormat){
dateFormat = dateFormat || 'YYYY-MM-DDTHH:mm:ss Z'; // ISO
delimiter = delimiter || ';' ;

var body = '';
// En tete
var keys = _.map(jsonArray[0], function(num, key){ return key; });
body += keys.join(delimiter) + '\r\n';
// Data
for(var i=0; i<jsonArray.length; i++){
var item = jsonArray[i];
for(var j=0; j<keys.length; j++){
var obj = item[keys[j]] ;
if (_.isDate(obj)) {
body += moment(obj).format(dateFormat) ;
} else {
body += obj ;
}

if (j < keys.length-1) {
body += delimiter;
}
}
body += '\r\n';
}

return body;
}

Javascript: How to convert an JSON arrays in array into an CSV file?

once you have your json as text you parse it:

var json = JSON.parse(jsonAsText);

transform it to an array:

json = Object.values(json);

init your result:

var csv = "";

keep header keys somewhere:

var keys = (json[0] && Object.keys(json[0])) || [];

write header row

csv += keys.join(',') + '\n';

iterate and put everything in csv

for (var line of json) {
csv += keys.map(key => line[key]).join(',') + '\n';
}

Your csv content should be ready