我有一个json数据,我想在此后加入并创建一个csv文件。 json数据如下所示。数据总是不一样的(就像在第一个json对象中只有两个字段,而在第二个和第三个字段中有3个字段,但其中一些是不同的,实际上,数据是表单输入并且可以基于输入动态收到非强制性要素)。 我确信的是,只有一个JSON数组将包含所有json
[{"firstName":"Kukreja","lastName":"Ramesh"},{"firstName":"Ram","lastName":"Laxman","dob":"jan-1990"},{"firstName":"Sam","resourceType":"/dmp/formdata","lastName":"Paul"}]
我必须使用此数据创建电子表格。所以列标题应该说firstName和所有json对象值如kureja / Ram / Sam应该出现在单独的行中,其他数据应该在列和行中相应地格式化。
目前,我正在使用此功能创建一个csv
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 += ','
console.log(array[i][index]);
line += array[i][index];
}
str += line + '\r\n';
}
return str;
}
答案 0 :(得分:1)
您可以使用以下功能...
固定示例!....请再次查看
看示例! - &GT; http://jsfiddle.net/Castrolol/9m9W5/ 在示例中也有下载方法...
function json2csv(objArray, headers, showHeaders) {
if( typeof headers == "boolean" ){
showHeaders = headers;
headers = null;
}
var itens = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
//separate fields
var fields = {};
if( !headers ){
for(var i = 0; i < itens.length; i++){
for(var prop in itens[i]){
if( !fields[prop] ){
fields[prop] = [];
}
}
}
}else{
headers.forEach(function(header){ fields[header] = []; });
}
//getting data
for(var i = 0; i < itens.length; i++){
for(var prop in fields){
if( typeof itens[i][prop] != "undefined" ){
fields[prop].push( itens[i][prop] );
}else{
fields[prop].push( "" );
}
}
}
//make the csv
var csvLines = [];
if( showHeaders ){
var lineFields = [];
for(var prop in fields){
lineFields.push( prop );
}
var line = lineFields.join(", ");
csvLines.push(line);
}
for(var i = 0; i < itens.length; i++){
var lineFields = [];
for(var prop in fields){
lineFields.push( fields[prop][i] );
}
var line = lineFields.join(", ");
csvLines.push(line);
}
var csvStr = "sep=,\n" + csvLines.join("\n");
return csvStr;
}