2015-01-05 1 views
1

새로 학습 한 node.js와 json2csv 노드 모듈을 사용하여 JSON 객체를 CSV 파일로 구문 분석하려고합니다. json2csv는 필드가 json 루트의 직접 하위 요소 인 플랫 구조 만 지원합니다. 내가 how-to-parse-json-object-to-csv-file-using-json2csv-nodejs-module 주제를 발견하고 json2csv의 createColumnContent 기능을 변경하여 json 파일의 오브젝트 elemet을 읽습니다. 하지만 내 JSON 파일은 배열 요소를 가지고 있으며,이 같은 것입니다 :json2csv nodejs를 사용하여 JSON에서 CSV 파일로

[ 
{ 
    "firstName": "John", 
    "lastName": "Smith", 
    "age": 25, 
    "address": { 
     "streetAddress": "21 2nd Street", 
     "city": "New York", 
     "state": "NY", 
     "postalCode": "10021" 
    }, 
    "phoneNumber": [ 
     { 
      "type": "home", 
      "number": "212 555-1234" 
     }, 
     { 
      "type": "fax", 
      "number": "646 555-4567" 
     } 
    ] 
}, 
{ 
    "firstName": "John", 
    "lastName": "Smith", 
    "age": 25, 
    "address": { 
     "streetAddress": "21 2nd Street", 
     "city": "New York", 
     "state": "NY", 
     "postalCode": "10021" 
    }, 
    "phoneNumber": [ 
     { 
      "type": "home", 
      "number": "212 555-1234" 
     }, 
     { 
      "type": "fax", 
      "number": "646 555-4567" 
     } 
    ] 
} 

]

나는 그런 일이 enter image description here

이 같은 json2csv 호출합니다 :

json2csv({ 
     data: body.issues, 
     fields: ['firstName','lastname','age','address.city', 'phoneNumber[?].type', 'phoneNumber[?].number'] 
    }, 
    function(err, csv) { 
     if (err) console.log(err); 
     fs.writeFile('sample.csv', csv, function(err) { 
      if (err) throw err; 
      console.log('file saved'); 
     }); 
    } 
); 

어떻게 배열을 읽고 내 CSV 파일에 추가 할 수 있습니까? 감사합니다.

+1

당신이 어떻게 것의 예를 제공 할 수 머리글을 포함하여 CSV 파일을 볼 수 있습니까? – Rajit

+0

이미지를 추가하여 내가 예상 한 것을 보여줍니다. – farhad

답변

1

아마도 json2csv 패키지의 일부를 재정의하는 것보다 데이터를 직접 변환하는 것이 좋습니다. 그런 다음 포맷팅을 위해 플랫 데이터 구조를 json2csv에 전달할 수 있습니다.

var xform = []; 
    for (var i=0, max=data.issuelinks.length; i<max; i++) { 
      xform[xform.length] = { id:data.id, progress:data.progress.percent, issuelinkid:data.issuelinks[i].id, issuelinktypeid:data.issuelinks[i].type.id } 
    } 
    console.log(xform); 
3

난 그냥 Node.js를 쉬운이 과정을 만드는 모듈을 출시

var jsonexport = require('jsonexport'); 

var contacts = [{ 
    name: 'Bob', 
    lastname: 'Smith', 
    family: { 
     name: 'Peter', 
     type: 'Father' 
    } 
},{ 
    name: 'James', 
    lastname: 'David', 
    family:{ 
     name: 'Julie', 
     type: 'Mother' 
    } 
},{ 
    name: 'Robert', 
    lastname: 'Miller', 
    family: null, 
    location: [1231,3214,4214] 
},{ 
    name: 'David', 
    lastname: 'Martin', 
    nickname: 'dmartin' 
}]; 

jsonexport(contacts,function(err, csv){ 
    if(err) return console.log(err); 
    console.log(csv); 
}); 

출력 :

lastname;name;family.type;family.name;nickname;location 
Smith;Bob;Father;Peter;; 
David;James;Mother;Julie;; 
Miller;Robert;;;;1231,3214,4214 
Martin;David;;;dmartin; 

https://www.npmjs.com/package/jsonexport

관련 문제