Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json值合并在一起并创建csv_Javascript_Json_Csv - Fatal编程技术网

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

Javascript 将json值合并在一起并创建csv,javascript,json,csv,Javascript,Json,Csv,我有一个json数据,我想加入,然后创建一个csv文件。json数据如下所示。数据并不总是相同的(就像在第一个json对象中只有两个字段,而在第二个和第三个json对象中有3个字段,但其中一些字段是不同的,实际上,数据是表单输入,可以基于在非强制元素上接收的输入而动态)。 我可以肯定的是,只有一个JSON数组将包含所有JSON [{"firstName":"Kukreja","lastName":"Ramesh"},{"firstName":"Ram","lastName":"Laxman","

我有一个json数据,我想加入,然后创建一个csv文件。json数据如下所示。数据并不总是相同的(就像在第一个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;
}
函数ConvertToCSV(objArray){
var array=typeof objArray!=“object”?JSON.parse(objArray):objArray;
var-str='';
对于(var i=0;i
您可以使用下面的功能

修复了示例!。。。。请再次查看

请参见示例!-> 在这个例子中也有一个下载方法

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;
}
函数json2csv(objArray、headers、showHeaders){
如果(标题类型==“布尔”){
showHeaders=标题;
headers=null;
}
var itens=typeof objArray!=“object”?JSON.parse(objArray):objArray;
//独立字段
变量字段={};
如果(!头){
对于(var i=0;i
问题是什么?这就像使用json数据作为输入创建CSV一样简单,但json数据将是动态的,CSV列应以行和列的格式相应地捕获数据我知道这就是您要做的;你发布的代码不是这样做的吗?您遇到的困难是什么?我遇到的问题是,如果json端对不同对象的排序不同,则生成的csv无法正确捕获这些内容,并且没有根据字段类型进行分类,我不确定如何在csv顶部只放置一个标题,应该是您提供的firstName、lastName等可以工作,但我看到我必须显式地提供头,这可以从json本身中选择,但json对象可能会有所不同。此外,我希望标题以csv格式出现,并且低于数据应该出现的格式。对于您提供的代码,只有数据被导出。如果您不提供标题,我将从json动态选取,用3行代码放置标题,我将对您进行修改…这似乎有效。由于我现在不在办公室,我将在以后集成JS并再次更新。谢谢你,伙计:)