← JSON 도구로 돌아가기

CSV를 JSON으로 변환

최종 업데이트: 2026년 10월 1일

CSV 표를 JSON 객체 배열로 되돌립니다. 헤더 행이 키가 되고, 읽을 때 RFC 4180 따옴표 규칙을 이해하며, 형식 자동 감지는 켤지 여부를 선택할 수 있습니다. 모든 처리는 브라우저 안에서 이루어지며 표는 기기를 떠나지 않습니다.

브라우저에서 실행 업로드 없음 RFC 4180 준수 앞의 0 보존 오픈 소스 (MIT)

이 변환이 하는 일

CSV는 열 이름을 첫 줄에 두므로 변환은 직접적인 대응입니다. 헤더 칸이 속성 이름이 되고, 그 뒤의 각 줄이 배열의 객체 하나가 됩니다. 다음 표는

id,name
1,Ada
2,Grace

[{"id":"1","name":"Ada"},{"id":"2","name":"Grace"}]가 됩니다. 값이 모두 문자열이라는 점에 주목하세요. 이것이 기본 동작이며 이유는 다음 절에서 설명합니다.

헤더 행이 스키마가 됩니다

첫 줄은 데이터가 아니라 헤더로 취급됩니다. 다음 두 가지 경계 상황은 놀라움으로 남기지 않고 처리합니다.

형식 자동 감지는 기본적으로 꺼져 있습니다——의도적입니다

CSV에는 형식이 없습니다. 모든 칸이 텍스트이고, 파일 자체는 숫자와 우연히 숫자인 코드를 구분하지 못합니다. 그래서 감지가 기본적으로 꺼져 있습니다. 끈 상태에서는 모든 값이 문자열로 유지되며, 이것이 파일에 충실한 해석입니다.

켜면 모호하지 않은 것만 변환합니다. JSON 숫자로 쓸 수 있는 값——선택적 음수 부호, 숫자, 선택적 소수부와 지수——만 숫자로 보고, true, false, null은 그 자체로 인식합니다. 중요한 점은 앞에 0이 있는 값은 변환하지 않는다는 것입니다. 007과 02139는 거의 항상 식별자——우편번호, 전화번호, 계정 번호, 상품 SKU——이기 때문입니다. 무턱대고 숫자로 바꾸면 007이 조용히 7이 되어 데이터가 망가지지만, 이 규칙은 그러지 않습니다.

따옴표로 감싼 필드, 내장 쉼표와 줄바꿈

읽기는 RFC 4180을 따릅니다. JSON을 CSV로 변환하는 페이지가 쓸 때 쓰는 것과 같은 규칙입니다. 큰따옴표로 감싼 필드는 구분자, 줄바꿈, 또는 두 번 쓴 큰따옴표(읽을 때 하나가 됨)를 담을 수 있습니다. 따라서 "Ada, Countess"는 쉼표를 포함한 하나의 값이고, 두 줄에 걸친 값도 한 칸으로 남습니다. CRLF와 LF 줄바꿈을 모두 받으며, 맨 앞의 UTF-8 바이트 순서 표시——Excel과 일부 내보내기 도구가 붙이는 보이지 않는 U+FEFF——는 제거되어 첫 열 이름이 id가 되는 일이 없습니다.

길이가 맞지 않는 행

손으로 편집한 파일이 반듯한 직사각형인 경우는 드뭅니다. 필드가 헤더보다 적은 행은 빈 값으로 채우고, 많은 행은 잘라내므로 모든 객체가 같은 키를 가집니다. 다른 선택——파일 전체를 거부하는 것——보다 형식이 맞는 행을 돌려주는 편이 유용하지만, 빠진 값이 출력에 없다는 점은 사실입니다.

자주 묻는 질문

CSV는 JSON 객체에 어떻게 대응되나요?

첫 줄을 헤더로 읽고 그 칸이 속성 이름이 됩니다. 그 뒤의 각 줄은 그 이름을 키로 하는 객체가 되어 배열에 담깁니다. 헤더가 id,name이고 한 줄 1,Ada뿐인 CSV는 [{ "id": "1", "name": "Ada" }]가 됩니다.

숫자와 불리언이 문자열이 되는 이유는 무엇인가요?

형식 자동 감지가 기본적으로 꺼져 있으며 이는 의도적입니다. CSV에는 형식이 없어서 007이 숫자 7인지 코드 007인지 도구가 알 수 없습니다. 잘못 추측하면 우편번호, 전화번호, 계정 ID 같은 식별자를 조용히 망가뜨립니다. 열이 숫자임을 확실히 알 때만 감지를 켜세요. 켜더라도 앞에 0이 있는 값은 문자열로 남습니다.

감지를 켰을 때 무엇이 숫자로 인식되나요?

JSON 숫자로 쓸 수 있는 텍스트만 해당합니다. 선택적 음수 부호, 앞에 0이 없는 숫자(값이 정확히 0인 경우는 제외), 선택적 소수부, 선택적 지수. true, false, null도 인식됩니다. 그 밖에는 007과 1,234를 포함해 문자열로 남습니다.

따옴표로 감싼 필드, 내장 쉼표와 줄바꿈은 어떻게 읽나요?

분석은 RFC 4180을 따릅니다. 큰따옴표로 감싼 필드는 구분자, 줄바꿈, 또는 두 번 쓴 큰따옴표(읽을 때 하나가 됨)를 담을 수 있습니다. 따라서 Ada, Countess가 든 칸은 "Ada, Countess"로 쓰이고, 두 줄에 걸친 값도 한 필드로 남습니다. CRLF와 LF 줄바꿈을 모두 받습니다.

파일에 UTF-8 BOM이 있는데 첫 열 이름이 깨지나요?

아니요. 맨 앞의 바이트 순서 표시——Excel 등 일부 도구가 CSV 맨 앞에 넣는 보이지 않는 U+FEFF——는 분석 전에 제거됩니다. 그렇지 않으면 첫 헤더가 id로 읽힙니다. 여기서는 id로 올바르게 읽힙니다.

헤더와 맞지 않는 행은 어떻게 되나요?

필드가 헤더보다 적은 행은 빈 값으로 채우고, 많은 행은 잘라내므로 모든 객체가 같은 키를 가집니다. 손으로 편집한 파일에서는 행 길이가 맞지 않는 경우가 흔합니다. 여기서는 거부하지 않고 받아들이지만, 빠진 데이터가 출력에 없다는 점은 사실입니다.

반대 방향이 필요한가요? JSON을 CSV로 변환에서 객체 배열을 표로 쓸 수 있습니다. 버그를 발견했나요? 문의하기.