CSV⇔JSON Lines(JSONL) 변환

CSV 파일과 JSON Lines(JSONL, 한 줄에 하나의 JSON 객체) 형식을 상호 변환합니다. 구분자를 선택할 수 있고, 키가 일치하지 않는 행도 자동으로 합쳐집니다. 변환은 브라우저 안에서만 이루어지며 서버로 전송되지 않습니다.

CSV 행과 JSONL 행의 대응 관계

CSV 머리글 행 + 데이터 행 name,age,city
Alice,30,Tokyo
변환된 JSONL(한 줄에 객체 하나) {"name": "Alice", "age": "30", "city": "Tokyo"}

머리글 행의 열 이름을 키로 사용하여 CSV의 각 데이터 행이 하나의 JSON 객체가 되고, 이것이 JSONL의 한 줄로 출력됩니다. 반대 방향(JSONL → CSV)에서는 모든 줄에 등장한 키의 합집합이 머리글 행이 되며, 특정 키가 없는 줄은 해당 열이 빈 칸으로 채워집니다.

사용 팁

  • JSONL→CSV 변환에서는 줄마다 키의 개수나 순서가 달라도 괜찮습니다. 모든 줄에 등장한 키의 합집합으로 머리글 행을 만들어 열을 자동으로 맞춰줍니다.
  • 머리글에 빈칸이나 중복된 열이 있으면 col{열 번호}나 이름_2 같은 키로 자동 치환되어 값이 사라지거나 덮어써지지 않습니다.
  • 값이 숫자·불리언·중첩된 객체나 배열이어도 CSV 셀에는 텍스트로 기록되므로, 변환 결과를 엑셀 등에서 그대로 열 수 있습니다.
  • 자매 도구인 "CSV→JSON 변환", "JSONL⇔JSON 배열 변환"과 함께 사용하면 CSV·JSON 배열·JSONL 세 형식을 자유롭게 오갈 수 있습니다.
  • 따옴표로 둘러싸인 셀 안의 쉼표·줄바꿈까지 정확히 처리하는 RFC 4180 표준 파서를 사용하므로, 엑셀 등에서 내보낸 복잡한 CSV도 정확히 변환됩니다.

자주 묻는 질문

CSV는 스프레드시트에서 열어 한눈에 확인·집계하기에 편리하고, JSON Lines는 한 줄씩 독립적으로 스트리밍 처리할 수 있어 머신러닝 데이터셋이나 로그 수집 도구에 자주 쓰입니다. 이 도구는 두 형식을 수작업 없이 오갈 수 있게 이어줍니다.

머리글 행을 제외한 각 데이터 행이 JSONL의 한 줄(하나의 JSON 객체)에 대응하며, 머리글 행의 열 이름이 그대로 JSON 객체의 키가 됩니다.

네. JSONL→CSV 변환에서는 모든 줄에 등장한 키를 모두 모아 하나의 머리글 행으로 만듭니다. 특정 키가 없는 줄은 해당 열이 빈 셀로 출력됩니다.

네. "구분자"에서 "탭"을 선택하면 양방향 모두 쉼표 대신 탭으로 구분된 데이터를 그대로 처리할 수 있습니다.

아니요. 모든 변환 처리는 브라우저 안의 자바스크립트에서 이루어지며, 입력한 내용이 서버로 전송되는 일은 없습니다.
ツールくん

여담 ― JSON Lines가 머신러닝과 로그 처리의 "공통어"가 된 이유

JSON Lines(JSONL)가 널리 쓰이게 된 큰 계기 중 하나는 머신러닝 데이터셋 배포입니다. 대규모 언어 모델의 파인튜닝 데이터는 수백만 건의 "입력과 출력" 쌍으로 이루어지는 경우가 많은데, 이를 하나의 JSON 배열로 묶어버리면 파일 전체를 메모리에 불러와 파싱을 마칠 때까지 단 한 건도 꺼낼 수 없습니다. JSONL은 한 줄을 하나의 완결된 레코드로 취급함으로써, 거대한 데이터셋도 스트림 형태로 순차 처리할 수 있게 해줍니다.

로그 처리 분야에서도 JSONL은 궁합이 좋은 형식입니다. Elasticsearch나 Logstash 같은 로그 수집 기반은 애플리케이션이 하나씩 내보내는 이벤트를 순차적으로 받아들이도록 설계되어 있어, JSON 배열처럼 "전체가 하나의 구조"인 형식보다 한 줄씩 독립적으로 추가·파싱할 수 있는 JSONL이 훨씬 자연스럽게 맞아떨어집니다.

한편 CSV는 지금도 업무 데이터 전달이나 스프레드시트에서의 확인 용도로 여전히 뿌리 깊은 수요가 있습니다. 이 도구는 성격이 다른 CSV와 JSONL 두 형식을 직접 이어줌으로써, "CSV로 받은 데이터를 그대로 머신러닝 파이프라인에 넣고 싶다", "JSONL로 출력된 로그를 엑셀에서 확인하고 싶다" 같은 상황을 한 단계로 해결해 줍니다.

→ 모든 여담 보기