JSON to CSV

HTML

<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/moment.min.js "></script>
<h1>JSON</h1>
<pre id="json"></pre>
<h1>CSV</h1>
<pre id="csv"></pre>

JavaScript

/**
 * 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;
}
         
// 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(JSONtoCSV(items));
});