CSV to JSON 변환기
CSV를 붙여넣으면 헤더 행을 키로 하는 JSON 객체 배열을 얻고, 헤더가 없으면 배열의 배열을 얻습니다. 방향을 바꾸면 평평한 객체의 JSON 배열을 다시 CSV로 바꿀 수 있습니다. 따옴표 안의 쉼표, 두 번 쓴 따옴표, 필드 안의 줄바꿈이 올바르게 읽히며, 변환은 브라우저에서 이루어집니다. 무료이며 회원가입이 필요 없습니다.
방향
CSV to JSON 변환기 사용 방법
- 1. 방향을 고르세요. 기본값은 CSV → JSON이고, JSON → CSV는 평평한 객체로 이루어진 JSON 배열을 입력받습니다.
- 2. 옵션을 설정하세요. 구분 기호는 자동 감지하거나 쉼표, 세미콜론, 탭 중 하나로 고정할 수 있습니다. JSON → CSV에서 자동 감지를 고르면 쉼표로 씁니다. CSV → JSON에서는 공백 2칸, 공백 4칸, 탭 들여쓰기 중에서 고르고, 첫 번째 행이 헤더인지도 정합니다.
- 3. 붙여넣고 변환하세요. 변환을 누르세요. 닫히지 않은 따옴표, 올바르지 않은 JSON, 객체가 아닌 항목이 섞인 배열 같은 문제는 결과 대신 메시지로 표시됩니다.
- 4. 복사하거나 다운로드하세요. 결과 복사는 출력을 복사하고, 다운로드 버튼은
data.json또는data.csv로 저장합니다.
CSV를 읽는 방식
CSV는 단순해 보이지만 그렇지 않습니다. 같은 파일도 쉼표, 세미콜론, 탭을 쓸 수 있고, 필드 안에 구분 기호와 같은 문자가 들어갈 수도 있습니다. 가장 가까운 명세는 RFC 4180이지만, 이는 표준이 아니라 정보 제공용 문서입니다. 쉼표, 큰따옴표 또는 줄바꿈이 들어간 필드는 큰따옴표로 감싸야 하고, 그 안의 큰따옴표는 두 번 써야 한다고 규정합니다. 변환기는 이 규칙을 따르되 몇 가지 관용을 더합니다:
- 따옴표 필드. 큰따옴표로 시작하는 필드는 닫는 따옴표까지 이어지므로, 구분 기호, 줄바꿈, 그리고
""로 쓴 큰따옴표 하나를 담을 수 있습니다. 닫히지 않은 따옴표는 변환을 멈추고, 그 필드가 시작된 줄을 알려 줍니다. - 줄 끝. LF, CRLF, 단독 CR 모두 행을 끝내며, 빈 줄은 건너뜁니다.
- 구분 기호 감지. 자동 모드에서는 첫 줄만 보고 쉼표, 세미콜론, 탭 중 가장 많이 나타나는 것을 고르며, 동점이면 쉼표를 씁니다. 첫 줄이 특이하다면, 예를 들어 열이 하나뿐이거나 제목 행이라면 구분 기호를 직접 고르세요. RFC 4180은 쉼표만 다루지만, 세미콜론은 유럽 지역 설정의 스프레드시트에서 내보낸 파일에 흔합니다.
- 모든 값은 문자열입니다. 변환기는 타입을 추측하지 않으므로
2020은 숫자가 아니라"2020"문자열이 되고, 빈 셀은 null이 아니라""가 됩니다. 코드에서 숫자가 필요하면 나중에 변환하세요.
실제 예시
헤더
name,note,year
1행
"Smith, Jane","Said ""hello""",2020
2행
Lee,short
결과
객체 두 개입니다. Smith, Jane은 note가 Said "hello"이고 year가 "2020"입니다. Lee는 note가 short이고 year가 ""입니다.
Smith, Jane의 쉼표는 따옴표 덕분에 한 필드에 남고, 두 번 쓴 따옴표는 하나로 합쳐집니다. Lee의 행은 셀이 하나 모자라서 year가 빈 문자열이 됩니다. 반면 추가 셀이 있는 행은 이름을 붙일 헤더가 없으므로 추가 셀이 버려집니다. 첫 번째 행을 헤더로 사용을 끄면 같은 입력이 [["name","note","year"],…]와 같은 배열의 배열이 되며, 짧은 행은 짧은 채로 남습니다.
헤더 이름이 중복되면 충돌합니다. id 열이 두 개 있으면 뒤의 열이 이기고 앞의 열은 사라지므로, 먼저 하나의 이름을 바꾸세요.
되돌리기: JSON에서 CSV로
반대 방향은 최상위 배열이어야 하며, 항목은 모두 객체여야 합니다. 헤더 행은 처음 나타난 순서대로 모든 키의 합집합이므로, 키가 서로 다른 객체도 맞춰 정렬되고, 빠진 값은 빈칸으로 남습니다. 숫자와 불리언은 나타난 그대로 쓰고, null은 빈 셀이 되며, 중첩된 배열이나 객체는 JSON 텍스트로 셀에 넣고 따옴표로 감쌉니다. 데이터가 중첩되어 있다면 먼저 평평하게 만드세요. 구분 기호, 큰따옴표 또는 줄바꿈이 있는 셀은 따옴표로 감싸며, 안의 큰따옴표는 두 번 씁니다. 행은 일반 줄바꿈 문자(LF)로 이어집니다.
[{"name":"Smith, Jane","year":2020,"tags":["a","b"]},{"name":"Doe","note":"two\nlines","year":null}]에 적용하면, 변환기는 헤더 name,year,tags,note, 첫 행 "Smith, Jane", 2020, 따옴표로 감싼 ["a","b"]를 쓰고, Doe의 행은 year와 tags가 비고 note에는 두 줄짜리 텍스트가 따옴표로 들어갑니다.
어떤 도구가 필요한가요?
| 필요한 것 | 사용할 도구 |
|---|---|
| CSV와 JSON 배열 사이의 변환 | 이 페이지 |
| CSV를 표로 보고 HTML로 복사 | CSV to Table |
| CSV에서 Markdown 표 만들기 | 마크다운 테이블 생성기 |
| CSV의 일부 열만 남기기 | Column Extractor |
| JSON 자체를 확인하거나 서식 맞추기 | JSON 포맷터 |
| YAML 또는 XML을 JSON과 상호 변환 | YAML to JSON, XML to JSON |
| 논문에 넣을 CSV 표 조판 | LaTeX Table Generator, APA Table Generator |
자주 묻는 질문
- CSV를 JSON으로 변환하려면 어떻게 하나요?
- CSV → JSON을 선택한 상태로 CSV를 입력란에 붙여넣고 변환을 누르세요. 첫 번째 행을 헤더로 사용을 켜 두면 헤더 이름을 키로 하는 객체 배열을, 끄면 배열의 배열을 얻습니다. 결과를 복사하거나 data.json으로 다운로드할 수 있습니다.
- 따옴표로 묶인 필드에 쉼표나 줄바꿈이 있어도 처리하나요?
- 네. 큰따옴표로 감싼 필드에는 구분 기호, 줄바꿈, 두 번 쓴 큰따옴표가 들어갈 수 있으며, 이는 RFC 4180이 설명하는 그대로입니다. 닫히지 않은 따옴표가 있으면 변환을 멈추고 그 필드가 시작된 줄을 알려 줍니다.
- 어떤 구분 기호를 지원하나요?
- 쉼표, 세미콜론, 탭을 지원합니다. 첫 줄에서 자동으로 감지하거나 직접 고를 수 있습니다. 파이프(|)나 다른 구분 기호는 지원하지 않으며, 열 추출기나 찾아 바꾸기로 먼저 쉼표로 바꾸면 됩니다.
- JSON에 있는 숫자가 왜 문자열인가요?
- CSV에는 타입이 없고 변환기는 타입을 추측하지 않으므로, 모든 값이 문자열로 나오고 빈 셀은 빈 문자열이 됩니다. 그래서
007이나1e5같은 값도 적힌 그대로 보존됩니다. 숫자가 필요하면 코드에서 변환하세요. - JSON에서 CSV로는 어떻게 바꾸나요?
- 객체로 이루어진 JSON 배열이 필요합니다. 각 객체가 한 행이 되고, 열은 어디에든 나타나는 모든 키입니다. 중첩된 객체나 배열은 JSON 텍스트로 셀에 들어갑니다. 올바르지 않은 JSON은 브라우저의 파서가 위치를 알려 줄 때 줄 번호와 함께 보고됩니다.
- 왜 변환 후 Excel에서 CSV가 잘못 열리나요?
- 파일은 바이트 순서 표시(BOM)가 없는 일반 UTF-8이고, 선택한 구분 기호를 씁니다. 세미콜론을 쓰는 지역의 Excel은 모든 내용을 한 열에 넣을 수 있고, 영문이 아닌 문자는 가져오기 마법사에서 UTF-8을 지정해야 할 수 있습니다. 세미콜론 구분 기호를 고르면 첫 번째 문제가 자주 해결됩니다.
- 제 데이터가 어딘가에 업로드되나요?
- 아니요. 두 방향 모두 브라우저에서 실행되며, 붙여넣은 텍스트는 CitationEasy로 전송되지 않습니다. 다운로드 파일도 브라우저에서 만들어집니다.