将json值组合在一起并创建csv

club json values together and create a csv

本文关键字:创建 csv 在一起 组合 json      更新时间:2023-09-26

我有一个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;
}

您可以使用下面的函数。。。

固定示例!。。。。请再次查看

请参阅示例!->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;
}