CSV⇔JSON Lines(JSONL) 변환
CSV 파일과 JSON Lines(JSONL, 한 줄에 하나의 JSON 객체) 형식을 상호 변환합니다. 구분자를 선택할 수 있고, 키가 일치하지 않는 행도 자동으로 합쳐집니다. 변환은 브라우저 안에서만 이루어지며 서버로 전송되지 않습니다.
CSV 행과 JSONL 행의 대응 관계
| CSV 머리글 행 + 데이터 행 | name,age,cityAlice,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도 정확히 변환됩니다.
자주 묻는 질문
여담 ― JSON Lines가 머신러닝과 로그 처리의 "공통어"가 된 이유
JSON Lines(JSONL)가 널리 쓰이게 된 큰 계기 중 하나는 머신러닝 데이터셋 배포입니다. 대규모 언어 모델의 파인튜닝 데이터는 수백만 건의 "입력과 출력" 쌍으로 이루어지는 경우가 많은데, 이를 하나의 JSON 배열로 묶어버리면 파일 전체를 메모리에 불러와 파싱을 마칠 때까지 단 한 건도 꺼낼 수 없습니다. JSONL은 한 줄을 하나의 완결된 레코드로 취급함으로써, 거대한 데이터셋도 스트림 형태로 순차 처리할 수 있게 해줍니다.
로그 처리 분야에서도 JSONL은 궁합이 좋은 형식입니다. Elasticsearch나 Logstash 같은 로그 수집 기반은 애플리케이션이 하나씩 내보내는 이벤트를 순차적으로 받아들이도록 설계되어 있어, JSON 배열처럼 "전체가 하나의 구조"인 형식보다 한 줄씩 독립적으로 추가·파싱할 수 있는 JSONL이 훨씬 자연스럽게 맞아떨어집니다.
한편 CSV는 지금도 업무 데이터 전달이나 스프레드시트에서의 확인 용도로 여전히 뿌리 깊은 수요가 있습니다. 이 도구는 성격이 다른 CSV와 JSONL 두 형식을 직접 이어줌으로써, "CSV로 받은 데이터를 그대로 머신러닝 파이프라인에 넣고 싶다", "JSONL로 출력된 로그를 엑셀에서 확인하고 싶다" 같은 상황을 한 단계로 해결해 줍니다.