CSV JSON 변환

브라우저 안에서만 처리됩니다. 입력한 내용과 선택한 파일은 서버로 전송되지 않습니다.

엑셀·구글 시트에서 복사한 표를 그대로 붙여넣어도 됩니다(탭으로 구분됩니다).

JSON 결과

CSV 를 입력하면 여기에 JSON 이 나옵니다.

사용법

  1. 방향을 고릅니다. CSV 를 JSON 으로 바꾸려면 "CSV → JSON", 반대로 바꾸려면 "JSON → CSV" 를 누릅니다.
  2. 표나 JSON 을 입력 칸에 붙여넣습니다. 엑셀·구글 시트에서 복사한 것도 그대로 됩니다. 구분자는 알아서 알아보고 무엇으로 봤는지 아래에 적어 줍니다 — 틀렸으면 직접 고르세요.
  3. 첫 줄을 제목 행으로 쓸지, 숫자와 true/false 를 값 타입으로 인식할지 고른 뒤 결과를 복사합니다.

자주 묻는 질문

우편번호 01234 가 1234 로 바뀌지 않나요?

바뀌지 않습니다. 숫자로 바꿔도 아무것도 잃지 않을 때만 숫자로 봅니다. 정확히는 자바스크립트가 그 숫자를 다시 찍었을 때 원문과 글자 하나까지 같아야 합니다. 그래서 `01234`(앞의 0 이 사라짐), `1.50`(끝의 0 이 사라짐), `010-1234-5678`, 20자리 정수(뒷자리가 바뀜)는 전부 문자열로 남습니다. 그래도 불안하면 "숫자·true/false 로 인식" 을 끄면 모든 값이 문자열이 됩니다.

따옴표 안에 쉼표나 줄바꿈이 있는 표도 되나요?

됩니다. 그게 이 도구를 쓰는 이유입니다. `a,"b,c",d` 는 세 칸이고, 따옴표 안의 `""` 는 따옴표 한 개이며, 따옴표 안의 줄바꿈은 행을 끊지 않습니다. 맨 앞의 BOM 도 떼어 내고(안 그러면 첫 열 이름에 눈에 안 보이는 글자가 붙습니다), CRLF·LF·CR 을 모두 행 구분으로 봅니다.

RFC 4180 을 정확히 지키나요?

기준으로 삼되 네 군데가 다릅니다. (1) 행 구분자를 CRLF 로 한정하지 않고 LF·CR 도 받습니다. (2) 따옴표 안의 줄바꿈은 LF 로 통일합니다 — 안 보이는 CR 이 JSON 문자열로 들어가면 나중에 다른 곳에서 터집니다. (3) `"b"c` 처럼 닫는 따옴표 뒤에 글자가 더 있으면 거절하지 않고 `bc` 로 이어 붙인 뒤 몇 행 몇 열이 그랬는지 알려 줍니다. (4) 끝나지 않은 따옴표는 파일 끝에서 닫힌 것으로 보고, 역시 알려 줍니다. 반대로 지키는 것 하나: 따옴표는 칸 맨 앞에 있어야 인용부호입니다. `a, "b" ,c` 의 두 번째 값은 공백과 따옴표가 붙은 채로 남습니다.

행마다 칸 수가 다르면 어떻게 되나요?

값을 버리지 않습니다. 제목보다 칸이 모자라면 나머지를 빈 문자열로 채우고, 남으면 `column5` 같은 이름을 지어 붙입니다. 어느 쪽이든 그런 행이 몇 개였는지 화면에 적습니다. 제목이 비어 있거나 겹칠 때도 마찬가지로 이름을 지어 주고 무엇을 어떻게 바꿨는지 보여 줍니다.

JSON 을 CSV 로 바꿀 때 숫자가 달라지지 않나요?

달라지지 않습니다. 흔한 구현처럼 JSON 을 읽었다가 다시 쓰면 `1.0` 이 `1` 이 되고 20자리 정수는 뒷자리가 0 으로 바뀝니다. 이 도구는 숫자를 원문 문자열 그대로 들고 있다가 그대로 칸에 넣습니다. 값이 객체나 배열이면 그 자리에 JSON 조각을 그대로 넣고, 그런 칸이 몇 개인지 알려 줍니다.

엑셀에서 열었더니 수식이 실행됩니다.

`=`, `+`, `-`, `@` 로 시작하는 값을 엑셀이 수식으로 읽어서 그렇습니다. 이 도구는 값을 고치지 않으므로 그런 값이 있으면 그대로 나갑니다. 남이 만든 표를 엑셀에서 열 때는 파일을 바로 열지 말고 "데이터 → 텍스트에서" 로 가져오면서 열 서식을 텍스트로 지정하는 편이 안전합니다.

입력한 표가 서버로 전송되나요?

아니요. 읽기와 변환이 모두 브라우저 안에서 끝납니다. 회원 명단이나 매출 표를 다른 서버로 보내는 경로가 이 페이지에는 없습니다. 50만 자를 넘으면 자동 변환을 멈추고 버튼을 띄우며(키를 누를 때마다 전체를 다시 계산하지 않기 위해서입니다), 결과는 화면에 앞 2만 자만 그리고 복사 버튼에는 언제나 전체를 넘깁니다.