俱乐部json值得一起创造一个csv

时间:2013-11-21 17:57:04

标签: javascript json csv

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

1 个答案:

答案 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;
}