CSV JSON 변환

헤더 행이 있으면 "name,age"와 "Ada,36" 두 줄짜리 CSV는 [{"name":"Ada","age":36}]가 됩니다. 행마다 헤더 이름을 키로 쓰는 객체가 하나씩 생깁니다. JSON을 CSV로 되돌리는 변환도 됩니다.

문제가 해결됐나요?
Google 선호 출처로 추가

사용 방법

  1. CSV → JSON 또는 JSON → CSV를 고르고 입력 칸에 데이터를 붙여 넣습니다. 처음에는 형식을 볼 수 있게 예시가 들어 있습니다.
  2. 파일에 맞는 구분자를 고릅니다. 쉼표, 세미콜론, 탭, 파이프 중에서 고를 수 있고, 유럽 쪽 엑셀에서 내보낸 파일은 세미콜론을 쓰는 경우가 많습니다.
  3. CSV → JSON에서 첫 행을 헤더로 사용을 켜 두면 객체 배열이, 끄면 배열의 배열이 나옵니다. 숫자와 true/false 변환에 체크하면 36이 문자열 "36"이 아니라 숫자로 들어갑니다.
  4. 결과를 복사합니다. 읽을 수 없는 입력이면 어디가 잘못됐는지 메시지로 알려 줍니다.

계산 방법

CSV는 RFC 4180 규칙대로 읽습니다. 큰따옴표로 감싼 필드 안에는 쉼표와 줄바꿈이 들어갈 수 있고, 필드 안의 큰따옴표는 두 번 겹쳐 씁니다. 줄 끝은 LF, CRLF, CR 모두 받고, 맨 앞의 BOM은 무시하며 빈 줄은 건너뜁니다.

헤더 행을 쓰면 첫 행이 키가 됩니다. 비어 있는 헤더는 column_N, 겹치는 헤더는 name_2처럼 번호가 붙어 값이 덮어써지지 않습니다. 헤더보다 짧은 행은 모자란 칸을 빈 문자열로 채우고, 긴 행은 남는 칸을 column_N 키로 추가합니다. 이런 행의 수는 상태 줄에 나옵니다.

타입 변환은 선택 사항이고 보수적으로 합니다. 42, -3.5, 1e3 같은 평범한 숫자와 true, false만 바꿉니다. 우편번호 02134처럼 0으로 시작하는 값, +5처럼 부호가 붙은 값, 정확히 표현할 수 없을 만큼 큰 정수는 문자열로 남깁니다.

JSON → CSV는 객체 배열, 배열의 배열, 값 배열, 객체 하나를 받습니다. 객체라면 모든 키를 처음 나온 순서대로 모아 열을 만듭니다. 키가 없는 칸과 null은 빈 칸이 되고, 중첩된 객체와 배열은 JSON 문자열로 한 칸에 들어갑니다. 구분자, 큰따옴표, 줄바꿈이 있는 칸만 따옴표로 감쌉니다.

CSV 칸이 JSON에서 어떻게 바뀌나

CSV 칸문자열 그대로타입 변환 켬
36"36"36
-3.5"-3.5"-3.5
true"true"true
02134"02134""02134"
""""
"a,b""a,b""a,b"

자주 묻는 질문

JSON에서 숫자가 문자열로 나와요

CSV에는 타입이 없어서 모든 칸이 글자입니다. 숫자와 true/false 변환에 체크하면 숫자와 불리언이 JSON 숫자·불리언으로 바뀝니다. 우편번호처럼 0으로 시작하는 값은 일부러 문자열로 둡니다.

칸 안에 쉼표나 줄바꿈을 넣을 수 있나요?

네. "Smith, John"처럼 큰따옴표로 감싸면 됩니다. 칸 안의 큰따옴표는 "He said ""hi"""처럼 두 번 씁니다. 읽기와 쓰기 모두 지원합니다.

세미콜론이나 탭으로 구분된 파일은요?

구분자 목록에서 맞는 것을 고르세요. 소수점에 쉼표를 쓰는 나라의 엑셀은 세미콜론으로 내보냅니다. 탭으로 구분된 파일은 TSV라고도 부릅니다.

어떤 JSON을 CSV로 바꿀 수 있나요?

[{"a":1},{"a":2}] 같은 객체 배열이 가장 잘 맞습니다. 배열의 배열, 값만 든 배열도 됩니다. CSV는 평평한 표라서 중첩 객체는 JSON 문자열 그대로 한 칸에 들어갑니다.

출력 줄바꿈이 CRLF인가요?

LF로 내보냅니다. 엑셀과 편집기 모두 문제없이 엽니다. 읽을 때는 LF, CRLF, CR을 모두 받습니다.

데이터가 업로드되나요?

아니요. 변환은 모두 브라우저 안에서 이뤄지므로 회사 데이터도 기기 밖으로 나가지 않습니다.