CSV 를 JSON 으로 변환하기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 JavaScript 를 사용하여 쉼표로 구분된 값 (CSV, comma-separated values) 문자열을 객체의 2 차원 배열로 변환하는 방법을 살펴봅니다. split()slice()와 같은 다양한 문자열 조작 메서드와 reduce()map()과 같은 배열 메서드를 사용하여 이 변환을 수행합니다. 이 랩은 JavaScript 에서 CSV 데이터를 처리하고 쉽게 처리할 수 있는 형식으로 조작하는 방법을 이해하는 데 도움이 될 것입니다.

CSV 를 JSON 으로 변환하기

쉼표로 구분된 값 (CSV) 문자열을 객체의 2 차원 배열로 변환하고 코딩 연습에 사용하려면 터미널/SSH 를 열고 node를 입력하십시오. 문자열의 첫 번째 행은 제목 행으로 사용됩니다. CSV 를 JSON 으로 변환하는 단계는 다음과 같습니다.

  1. Array.prototype.indexOf()를 사용하여 첫 번째 줄 바꿈 문자 (\n) 를 찾습니다.
  2. Array.prototype.slice()를 사용하여 첫 번째 행 (제목 행) 을 제거하고, 제공된 delimiter를 사용하여 String.prototype.split()으로 값을 분리합니다.
  3. String.prototype.split()을 사용하여 각 행에 대한 문자열을 생성합니다.
  4. 제공된 delimiter를 사용하여 String.prototype.split()을 사용하여 각 행의 값을 분리합니다.
  5. Array.prototype.reduce()를 사용하여 제목 행에서 구문 분석된 키를 사용하여 각 행의 값에 대한 객체를 생성합니다.
  6. 두 번째 인수 delimiter를 생략하여 기본 구분 기호인 ,를 사용합니다.

다음은 코드입니다.

const CSVToJSON = (data, delimiter = ",") => {
  const titles = data.slice(0, data.indexOf("\n")).split(delimiter);
  return data
    .slice(data.indexOf("\n") + 1)
    .split("\n")
    .map((v) => {
      const values = v.split(delimiter);
      return titles.reduce(
        (obj, title, index) => ((obj[title] = values[index]), obj),
        {}
      );
    });
};

함수를 테스트하려면 다음 예제를 사용하십시오.

CSVToJSON("col1,col2\na,b\nc,d");
// [{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}];
CSVToJSON("col1;col2\na;b\nc;d", ";");
// [{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}];

요약

축하합니다! CSV 를 JSON 으로 변환하는 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.