2013-03-13 5 views
1

json 개체의 배열을 csv로 변환하는 방법은 무엇입니까?Javascript/json을 csv로 변환

[{ name: "Item 1", color: "Green", size: "X-Large" }, 
{ name: "Item 2", color: "Green", size: "X-Large" }, 
{ name: "Item 3", color: "Green", size: "X-Large" }]; 

JSFiddle에

name;color;size 
Item 1;Green;X-Large 
Item 2;Green;X-Large 
Item 3;Green;X-Large 
+0

[JSON을 CSV 형식으로 변환하고 변수에 저장하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/8847766/how-to-convert-json-to-csv-format-and-store) -in-a-variable) – jcubic

+1

내 함수에서 header와 dateformat을 추가했습니다. – Farandole

답변

2

예를 제공합니다 : http://jsfiddle.net/FLR4v/

종속 관계 :

이 미래 연구원 여기 내 결과를 저장, 꽤 오래된 질문 비록 기능

/** 
* Return a CSV string from an array of json object 
* 
* @method JSONtoCSV 
* @param {Object} jsonArray an array of json object 
* @param {String} [delimiter=;] delimiter 
* @param {String} [dateFormat=ISO] dateFormat if a date is detected 
* @return {String} Returns the CSV string 
**/ 
function JSONtoCSV(jsonArray, delimiter, dateFormat){ 
    dateFormat = dateFormat || 'YYYY-MM-DDTHH:mm:ss Z'; // ISO 
    delimiter = delimiter || ';' ; 

    var body = ''; 
    // En tete 
    var keys = _.map(jsonArray[0], function(num, key){ return key; }); 
    body += keys.join(delimiter) + '\r\n'; 
    // Data 
    for(var i=0; i<jsonArray.length; i++){ 
     var item = jsonArray[i]; 
     for(var j=0; j<keys.length; j++){ 
      var obj = item[keys[j]] ; 
      if (_.isDate(obj)) {     
       body += moment(obj).format(dateFormat) ; 
      } else { 
       body += obj ; 
      } 

      if (j < keys.length-1) { 
       body += delimiter; 
      } 
     } 
     body += '\r\n'; 
    } 

    return body; 
} 
-2
function getCSVFromJson(k) 
{ 
var retVal=[]; 
k.forEach(function(a){ 
var s=''; 
for(k in a){ 
    s+=a[k]+';'; 
} 

retVal.push(s.substring(0,s.length-1)); 
}); 
return retVal; 
} 
+0

설명하면 *** *** 코드가 문제를 해결하는 것이 좋습니다. 제발, [대답] 참조하십시오. – brasofilo

0

.

자바 스크립트는 이제 json의 모든 값을 배열로 가져올 수있는 Object.values의 기능을 제공합니다.이 기능은 join을 사용하여 csv로 변환 할 수 있습니다.

var csvrecord = Object.keys(jsonarray[0]).join(',') + '\n'; 
jsonarray.forEach(function(jsonrecord) { 
    csvrecord += Object.values(jsonrecord).join(',') + '\n'; 
}); 

일부 브라우저에서만 여전히 지원되지 않는 제한 사항입니다.

+0

개체가 "단순"인 경우에만 작동합니다. jsonrecord에 datetime 객체 또는 기괴한 객체가 포함되어있는 경우 object.values가 쓸 객체입니다. – Farandole