2015-01-16 2 views
2

데이터가 CSV 형식의 데이터이고 자바 스크립트를 사용하여 JSON 형식으로 변환하려고합니다. 나는 그들의 저자와 모든 책을 얻으려면자바 스크립트를 사용하여 CSV 데이터를 JSON 형식으로 변환

[Test.csv] 
id;name;author 
integer;string;authors:n 
1;To Kill an Angry Bird;1 

[authors.csv] 
id;name 
integer;string 
1;Harper Lee 
2;JRR Tolkien 
3;William Shakespeare 

: 다음

CSV 형식입니다. 그래서 Javascript를 사용하여 어떻게 구현할 수 있습니까?

+1

에 오신 것을 환영에 StackOverflow에. 지금까지 해봤습니까? 코드가 작동하지 않아도 코드를 표시 할 수 있습니까? –

+0

jquery-csv, 특히 toArrays()를 사용하여 CSV를 변환하여 메모리 내 데이터로 변환합니다. 그런 다음 JSON.stringify()를 호출하여 JSON으로 변환하십시오. 다음은 jquery-csv https://github.com/evanplaice/jquery-csv에 대한 링크입니다. –

답변

4

아래 내용이 유용합니다.

모든 신용

//var csv is the CSV file with headers 
function csvJSON(csv){ 

    var lines=csv.split("\n"); 

    var result = []; 

    var headers=lines[0].split(","); 

    for(var i=1;i<lines.length;i++){ 

     var obj = {}; 
     var currentline=lines[i].split(","); 

     for(var j=0;j<headers.length;j++){ 
      obj[headers[j]] = currentline[j]; 
     } 

     result.push(obj); 

    } 

    //return result; //JavaScript object 
    return JSON.stringify(result); //JSON 
} 
0

http://techslides.com/convert-csv-to-json-in-javascript에 나는 @ DelightedD0D 같은 비슷한 대답을하지만, 내 코드는 직접 (텍스트 영역으로 엑셀에서 복사 및 붙여 넣기) 엑셀과 함께 사용할 수 있습니다.

function csvUpload(csvText){ 
     //Split all the text into seperate lines on new lines and carriage return feeds 
     var allTextLines = csvText.split(/\r\n|\n/); 
     //Split per line on tabs and commas 
     var headers = allTextLines[0].split(/\t|,/); 
     var lines = []; 
     var locations = []; 

     for (var i=1; i<allTextLines.length; i++) { 
      var data = allTextLines[i].split(/\t|,/); 

      if (data.length == headers.length) { 

      var location = {"device_id":data[0], "address":data[1], "city":data[2]}; 
      locations.push(location); 

      } 

     } 
     return locations; 
    } 

이렇게하면 Excel에 복사 된 CSV를 사용할 수 있습니다. Excel은 ,과 같은 분리자를 제거하고 줄 바꿈 등을 삽입합니다.

내 코드를 사용하면 모든 것을 Excel에서 직접 텍스트 필드로 전달한 다음이를 사용하여 json을 만들 수 있습니다.

는 여기 정적 필드의 이름을 가지고 있지만, 동적 헤더를 설정하는 DelightedD0D의 코드 @ 사용할 수 있습니다

for(var j=0;j<headers.length;j++){ 
      obj[headers[j]] = currentline[j]; 
     } 
관련 문제