MiServe DevTools

내 스티커

도구를 여기에 고정하세요. 이 브라우저에 저장됩니다.

CSV JSON 변환기

CSV를 JSON으로, JSON을 CSV로 변환합니다. 따옴표로 감싼 필드, 쉼표·세미콜론·탭·파이프 구분자, 타입 추론, 표 미리보기를 지원합니다.

JSON 출력

브라우저에서 실행됩니다. 붙여 넣은 내용은 업로드되지 않습니다.

이 도구에 대하여

CSV란 무엇이고, 파일마다 무엇이 다른가

RFC 4180은 CSV를 줄바꿈으로 구분된 레코드와 쉼표로 구분된 필드로 정의합니다. 쉼표, 따옴표, 줄바꿈이 들어 있는 필드는 큰따옴표로 감싸고, 그 안의 따옴표는 두 번 씁니다. 이 형식에는 타입이 없어 모든 값이 텍스트이며, 파일 자체로는 어떤 구분자나 문자 인코딩을 쓰는지 알릴 수 없습니다.

실제 파일은 제각각입니다. 소수점을 쉼표로 쓰는 지역으로 설정된 스프레드시트 프로그램은 대개 세미콜론으로 내보내고, 데이터베이스 도구는 탭으로 내보내는 경우가 많으며, 줄 끝은 CRLF, LF, CR 중 무엇이든 될 수 있습니다. 이 도구는 이 모두를 읽으며, 바이트 순서 표식(BOM)을 제거하고, 빈 줄을 건너뛰고, 따옴표 없는 필드 안에 잘못 들어간 따옴표는 텍스트로 유지합니다.

CSV를 JSON으로 바꾸는 방식

자동 감지를 선택하면 처음 20행을 쉼표, 세미콜론, 탭, 파이프로 각각 나눠 보고, 생기는 열 수와 같은 열 수를 가진 행이 얼마나 되는지로 각 구분자에 점수를 매깁니다. 필드 중간에 따옴표가 남는 구분자는 점수가 낮아집니다. 미리보기에 결과가 표시되므로 잘못 추측한 경우 쉽게 알아보고 직접 바로잡을 수 있습니다.

타입 추론을 켜면 빈 필드는 null, true와 false는 불리언이 되고, 일반적인 10진수는 쓰인 그대로의 JSON 숫자가 되므로 49.90은 49.90으로 남습니다. 그 밖의 값은 숫자처럼 보이기만 하는 값을 포함해 모두 문자열로 남습니다. 007, +39, 1e5는 수량보다 코드인 경우가 더 많기 때문입니다.

필드가 헤더보다 적거나 많은 행도 변환되며, 그 줄 번호가 목록으로 표시됩니다. 객체 배열에서는 빠진 키를 생략하고, 남는 필드에는 위치에 따라 column_N이라는 이름을 붙입니다. 비어 있는 헤더 셀도 같은 방식으로 이름이 붙고, 반복되는 이름에는 _2 같은 접미사를 붙여 어떤 값도 다른 값을 덮어쓰지 않게 합니다.

JSON을 CSV로 바꾸는 방식

객체 배열은 객체마다 한 행이 됩니다. 헤더는 모든 키의 합집합으로, 키가 처음 나타난 순서를 따르며, 어떤 키가 없는 객체는 해당 필드가 비게 됩니다. 중첩된 배열이나 객체는 JSON 텍스트로 셀에 쓰이고, null은 빈 필드가 됩니다. 배열의 배열은 행 단위로 그대로 쓰입니다.

필드는 구분자, 따옴표, 줄바꿈이 들어 있을 때만 따옴표로 감쌉니다. 다운로드한 파일은 RFC 4180에 명시된 대로 레코드를 CRLF로 구분합니다.

자주 묻는 질문

파일이 업로드되나요?

아니요. 파일은 브라우저가 읽고 사용자의 기기에서 변환합니다. 이 도구는 파일로 네트워크 요청을 보내지 않으며, 사이트의 보안 정책이 다른 호스트로 가는 요청을 차단합니다.

007 같은 값은 왜 문자열로 남나요?

JSON 숫자는 앞에 0이 올 수 없고, 007을 7로 바꾸면 우편번호나 상품 코드의 정보가 사라집니다. 이 도구는 일반적인 10진수만 숫자로 변환합니다. 모든 값을 문자열로 유지하려면 타입 추론을 끄세요.

구분자가 잘못 감지되면 어떻게 하나요?

목록에서 구분자를 직접 선택하세요. 감지는 처음 20행을 보고 이루어지므로, 열이 하나뿐이거나 행이 매우 불규칙한 파일에서는 틀릴 수 있습니다. 감지된 구분자는 미리보기 제목 옆 줄에 표시됩니다.

셀 안의 줄바꿈은 어떻게 처리되나요?

큰따옴표로 감싼 필드에는 줄바꿈이 들어갈 수 있으며, JSON 문자열에서는 \n이 됩니다. 경고에 나오는 줄 번호는 파일의 줄 번호이므로, 이런 필드 뒤에서는 행 번호보다 커집니다.

데이터의 다른 도구