[英]Javascript / convert json to csv
How to convert an array of json object to csv?如何将 json object 的数组转换为 csv?
ex前任
[{ name: "Item 1", color: "Green", size: "X-Large" },
{ name: "Item 2", color: "Green", size: "X-Large" },
{ name: "Item 3", color: "Green", size: "X-Large" }];
give给
name;color;size
Item 1;Green;X-Large
Item 2;Green;X-Large
Item 3;Green;X-Large
Example in JSFiddle : http://jsfiddle.net/FLR4v/ JSFiddle中的示例: http : //jsfiddle.net/FLR4v/
Dependencies : 依赖性:
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;
}
Even though this is pretty old question, saving my findings here for future researchers. 尽管这是一个非常古老的问题,但我的研究结果可以保存给未来的研究人
Javascript now provides the feature of Object.values which can pull all values of a json to an array, which can then be converted to csv using join. Javascript现在提供了Object.values的功能,它可以将json的所有值都拉到一个数组,然后可以使用join将其转换为csv。
var csvrecord = Object.keys(jsonarray[0]).join(',') + '\n';
jsonarray.forEach(function(jsonrecord) {
csvrecord += Object.values(jsonrecord).join(',') + '\n';
});
Only limitation is that it is still not supported by a few browsers. 唯一的限制是它仍然不受少数浏览器的支持。
function getCSVFromJson(k)
{
var retVal=[];
k.forEach(function(a){
var s='';
for(k in a){
s+=a[k]+';';
}
retVal.push(s.substring(0,s.length-1));
});
return retVal;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.