2013-11-21 2 views
0

클럽에 넣고 싶은 json 데이터가 있고 이후 CSV 파일을 만듭니다. json 데이터는 다음과 같습니다. 데이터는 항상 동일하지 않습니다 (첫 번째 json 객체에는 두 개의 필드 만 있고 두 번째와 세 번째에는 세 개의 필드가 있지만 이들 중 일부는 다릅니다. 실제로 데이터는 폼 입력이며 입력에 따라 동적 일 수 있습니다. 비 필수 요소에서 수신). 나는 확실히의 생각 것은 하나의 JSON 배열이 나는이 데이터를 스프레드 시트를 만들 수있는 모든 JSON을club json 값을 함께 사용하여 CSV를 만듭니다.

[{"firstName":"Kukreja","lastName":"Ramesh"},{"firstName":"Ram","lastName":"Laxman","dob":"jan-1990"},{"firstName":"Sam","resourceType":"/dmp/formdata","lastName":"Paul"}] 

을 포함 할 것입니다. 따라서 열 표제는 firstName을 말하고 kureja/Ram/Sam과 같은 모든 json 객체 값은 별도의 행에 나타나야하며 다른 데이터는 열과 행에 따라 형식이 지정되어야합니다.

현재, 난 당신이 아래의 기능을 사용할 수 있습니다

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

질문은 무엇인가 있나요? – Mathletics

+0

입력으로 json 데이터를 사용하여 CSV를 만드는 것만 큼 간단하지만 json 데이터는 동적이되고 csv 열은 행 및 열 형식으로 데이터를 적절하게 캡처해야합니다. –

+1

나는 그 일을 이해하고 있습니다. 게시 한 코드가 그렇게하지 않습니까? 당신이 겪고있는 어려움은 무엇입니까? – Mathletics

답변

1

를 CSV에게 ... 만들려면이 기능을 사용하고

예! ... 다시

를 참조하십시오 고정

예를보세요! ->의 예에서 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; 
} 
+0

당신이 제공 한 것은 작동하지만 헤더를 명시 적으로 제공해야합니다. json 자체에서 선택 될 수 있지만 json 객체는 다를 수 있습니다. 또한, 나는 csv 아래에 헤더가 오기를 원합니다. 제공 한 코드를 사용하여 데이터 만 내보내집니다. –

+0

헤더를 제공하지 않으면 json에서 동적으로 선택합니다. 헤더를 넣은 3 줄을 사용하면 수정 해 드리겠습니다 ... –

+0

작동하는 것 같습니다. 사인은 이제 사무실에 없으며 JS를 나중에 통합하고 다시 업데이트 할 것입니다. 덕분에 톤 메이트 :) –

관련 문제