CSV를 JSON으로 변환
CSV·TSV를 JSON으로 변환 — 객체 배열, 키 객체, 열 배열, JSON Lines, 압축 출력. 정렬·건너뛰기·행 제한, EUC-KR 등 10가지 인코딩. 브라우저에서만 처리, 업로드 없음.
옵션 더 보기
🔒 브라우저에서 실행되며 업로드되지 않습니다.
CSV 행을 JSON 배열로
CSV나 TSV 텍스트를 브라우저 안에서 바로 깔끔한 JSON 배열로 변환합니다. 스프레드시트 내보내기, 데이터베이스 덤프, API 응답을 붙여넣으면 코드나 설정 파일, 요청 본문에 바로 넣을 수 있는 JSON을 얻습니다. RFC 4180 규칙을 따르므로 쉼표, 큰따옴표, 줄바꿈이 들어간 따옴표 필드도 행이 깨지지 않고 올바르게 처리됩니다.
선택 가능한 옵션
구분자는 쉼표, 탭(TSV), 세미콜론(유럽식 Excel), 파이프, 콜론, 공백, 캐럿 중에서 고르거나 직접 입력할 수 있고, 자동 감지에 맡겨도 됩니다. “첫 행을 헤더로 사용”을 켜면 열 이름을 키로 하는 객체 배열이, 끄면 배열의 배열이 만들어집니다. 타입 변환을 켜면 42, true, null 같은 셀이 실제 JSON 숫자·불리언·null로 바뀌며, 007이나 우편번호 같은 식별자는 문자열로 유지되어 데이터가 손상되지 않습니다. 모든 처리는 로컬에서 이루어져 파일이 기기를 벗어나지 않습니다.
출력 형태 네 가지, 서식 세 가지
결과가 반드시 객체 배열일 필요는 없습니다. 한 열을 키로 쓰는 객체를 고르면 각 행이 자기 키 아래의 값이 되고, 키로 쓴 열은 값 안에서 빠집니다. 값이 겹치는 열로 키를 만들면 행 하나가 조용히 사라지므로, 겹친 값을 그대로 알려 주고 변환을 멈춥니다. 열마다 배열 하나는 {"이름": ["김민준","이서연"]}처럼 열 단위로 묶어 줍니다. 헤더를 끄면 첫 행까지 포함한 배열의 배열, 즉 네 번째 형태가 됩니다. 각 형태는 공백 2칸 들여쓰기, 한 줄 압축, 그리고 JSON Lines(레코드 하나가 한 줄, 사이에 쉼표 없음, .jsonl 파일로 저장) 중에서 골라 쓸 수 있습니다. JSON Lines는 목록 형태에서만 성립하므로, 키 객체나 열 배열에 요청하면 엉뚱한 결과를 내는 대신 거절합니다.
JSON이 되기 전에 행을 다듬기
“옵션 더 보기”에는 실무에서 자주 필요한 것들이 있습니다. 위에서 건너뛸 줄 수는 헤더 위에 붙은 제목 줄이나 내보내기 안내문을 걷어내며, 자동 감지는 건너뛴 뒤 만나는 줄을 헤더로 읽습니다. 최대 행 수는 데이터 행을 잘라 내되 정렬 뒤에 적용되므로 정렬과 함께 쓰면 실제 상위 N행이 나옵니다. 정렬 기준 열은 숫자는 숫자로, 나머지는 코드 포인트 순서로 비교하고, 같은 값끼리는 파일에 있던 순서를 그대로 지킵니다. 내보낼 열에 이름을 적으면 필요한 열만 그 순서대로 나가고, 파일에 없는 이름은 그 이름을 짚어 알려 줍니다. 빈 칸은 항목 자체를 빼기는 빈 문자열을 넣는 대신 키를 아예 만들지 않고, NULL을 null로 읽기는 타입 변환 전체를 켜지 않고도 대소문자 상관없이 NULL·Null·null을 JSON null로 바꿉니다. 경로 헤더로 중첩 객체 복원은 address.city 같은 헤더를 실제 중첩 구조로 되돌리며, tags.0처럼 숫자 구간은 배열이 되고 이음 문자는 .·/·_ 중에서 고릅니다. 같은 경로를 두고 서로 어긋나는 헤더는 덮어쓰지 않고 알려 줍니다. JSON → CSV 변환기의 평탄화를 정확히 되돌리는 기능입니다.
실제로 받아 보는 스프레드시트 파일
.csv·.tsv·.txt 파일을 10MB까지 열 수 있고, 파일이 저장된 인코딩을 지정할 수 있습니다. utf-8, utf-16le, utf-16be, windows-1252, windows-1251, iso-8859-2, euc-kr, shift_jis, gb18030, big5 열 가지입니다. 해독은 엄격해서, CP949(EUC-KR)로 저장된 파일을 UTF-8로 읽으면 물음표 범벅을 돌려주는 대신 어떤 설정을 바꿔야 하는지 알려 줍니다. Excel이 붙이는 UTF-8 BOM은 제거되어 첫 열 이름이 그대로 키가 되고, 중복된 헤더 이름은 a, a_2로 구분해 열이 사라지지 않게 하며, =·+·-·@로 시작하는 칸 앞에 스프레드시트용으로 붙는 작은따옴표는 읽을 때 다시 떼어 냅니다. “링크 복사”에는 옵션만 담기고 데이터는 담기지 않습니다.
자주 묻는 질문
제 CSV가 서버로 업로드되나요?
아니요. 모든 파싱은 브라우저의 JavaScript로 처리됩니다. 데이터는 기기를 떠나지 않으며 업로드·기록·저장되지 않습니다.
헤더 옵션을 켜고 끄면 무엇이 달라지나요?
헤더를 켜면 첫 행이 키가 되고 이후 각 행이 JSON 객체가 됩니다. 끄면 첫 행을 포함한 모든 행이 문자열 셀의 배열이 되어 헤더가 없는 데이터에 유용합니다.
타입 변환은 어떤 기준으로 값을 바꾸나요?
값이 정확히 왕복될 때만 변환합니다. 42는 숫자, true·false는 불리언, null은 null이 됩니다. 007, +1, 1.0 같은 값은 앞자리 0과 서식을 지키기 위해 문자열로 남습니다.
ID 열을 키로 하는 객체로 받을 수 있나요?
네. “출력 형태”를 “한 열을 키로 쓰는 객체”로 바꾸고 키로 쓸 열을 고르면 됩니다. 각 행은 자기 키 아래의 값이 되고, 키로 쓴 열은 값에서 빠집니다. 두 행이 같은 키를 가지면 한 행이 조용히 사라지므로, 겹친 값을 알려 주고 변환을 멈춥니다.
JSON Lines(NDJSON)나 한 줄 압축 출력도 되나요?
“출력 서식”에서 공백 2칸 들여쓰기, 한 줄 압축, JSON Lines 중에서 고를 수 있습니다. JSON Lines는 레코드 하나가 한 줄이고 사이에 쉼표가 없으며 .jsonl 파일로 내려받습니다. 목록 형태에서만 성립하므로 “한 열을 키로 쓰는 객체”나 “열마다 배열 하나”에서는 엉뚱한 결과를 내는 대신 거절합니다.
헤더 위에 제목 줄이 붙은 파일은 어떻게 하나요?
“옵션 더 보기”의 “위에서 건너뛸 줄 수”에 그만큼 적으면 파싱 전에 걷어냅니다. 자동 감지는 건너뛴 뒤 만나는 줄을 헤더로 읽습니다. “최대 행 수”는 데이터 행을 잘라 내며 정렬 뒤에 적용되므로, 정렬 기준 열을 정하고 10을 넣으면 실제 상위 10행이 나옵니다.
address.city 같은 헤더를 중첩 객체로 되돌릴 수 있나요?
네. “경로 헤더(addr.city)로 중첩 객체 복원”을 켜면 address.city가 {"address":{"city":…}}가 되고, tags.0처럼 숫자 구간은 배열이 됩니다. 이음 문자는 점·슬래시·밑줄 중에서 고를 수 있습니다. 같은 경로를 두고 한쪽은 값을, 다른 쪽은 그 안의 항목을 가리키는 헤더는 덮어쓰지 않고 알려 줍니다. JSON → CSV 변환기의 평탄화를 정확히 되돌립니다.
한글 CSV를 열었더니 글자가 깨집니다.
“옵션 더 보기”의 “여는 파일의 인코딩”을 먼저 지정한 뒤 파일을 다시 여세요. utf-8, utf-16le, utf-16be, windows-1252, windows-1251, iso-8859-2, euc-kr, shift_jis, gb18030, big5 열 가지를 제공합니다. 해독이 엄격해서 CP949(EUC-KR) 파일을 UTF-8로 읽으면 깨진 글자를 돌려주는 대신 어떤 설정을 바꿔야 하는지 알려 줍니다.