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
var json = { "1": { "Nachname": "Stromberg", "Vorname": "Bernd", "Benutzername": "strombergbernd12", "Password": "Xrz5Bv6A" }, "2": { "Nachname": "Heisterkamp", "Vorname": "Ernie", "Benutzername": "heisterkampernie12", "Password": "aOq24EpF" }}
function toCSV(json) { json = Object.values(json); var csv = ""; var keys = (json[0] && Object.keys(json[0])) || []; csv += keys.join(',') + '\n'; for (var line of json) { csv += keys.map(key => line[key]).join(',') + '\n'; } return csv;}
console.log(toCSV(json));
Related Topics
How to Expire a Cookie in 30 Minutes Using Jquery
Javascript (+) Sign Concatenates Instead of Giving Sum of Variables
Best Way to Get Objects With Highest Property Value
While Looping a Jquery Ajax Call
Ask for Geolocation Permission Again If It Was Denied
Prevent CSS Tooltip from Going Out of Page/Window
Exclude a Folder from Glob Pattern Matching
Webaudio - Seamlessly Playing Sequence of Audio Chunks
Verify External Script Is Loaded
Javascript Generate Unique Number Based on String
Replacing Multiple Elements of an Array While Keeping Their Position
Check If Token Expired Using This Jwt Library
Detect Click on HTML Button Through JavaScript in Android Webview
Javascript to Hide Multiple Div
How to Select Id and Get a Value of It in Input Data in This Row
How to Send a Http Delete Request from Browser