← 모든 도구

CSV → JSON 변환기

브라우저에서 CSV를 JSON으로, JSON을 CSV로 변환하세요. 행과 헤더를 깔끔하게 매핑하고 따옴표 필드와 구분자를 처리하며 데이터는 로컬에 유지됩니다.

CSV와 JSON: 동일한 데이터를 담는 두 가지 방법

대부분의 표 형태 데이터는 두 가지 형식 중 하나에 담기게 됩니다. CSV는 스프레드시트의 고유 언어입니다. 각 줄이 행이고 쉼표가 열을 구분하는 일반 텍스트 파일입니다. JSON은 API와 앱의 언어입니다. 객체(키와 값 쌍)와 배열(순서 있는 목록)로 구성된 구조화된 텍스트 형식입니다. 둘 다 동일한 정보를 매우 다른 형태로 설명하는데, 이것이 바로 서로 간의 변환이 자주 필요한 이유입니다. 이 페이지는 브라우저 안에서 완전히 양방향으로 변환을 수행합니다.

CSV는 격자 형태가 자연스러운 곳에서 빛을 발합니다. 데이터베이스에서 보고서를 내보내거나, 주문 목록을 다운로드하거나, Excel이나 Google Sheets에서 시트를 저장할 때 거의 항상 CSV를 얻습니다. 압축적이고, 사람이 읽을 수 있으며, 세상의 모든 분석 도구가 열 수 있습니다. JSON은 소프트웨어가 소프트웨어와 통신하는 곳에서 빛을 발합니다. REST API가 이를 주고받고, 설정 파일이 이를 사용하며, JavaScript가 파싱 라이브러리 없이도 이를 읽습니다. 스프레드시트 내보내기를 API에 공급하거나 API 응답을 스프레드시트로 가져와야 할 때, 바로 이 두 세계 사이에서 번역하는 것입니다.

어두운 남색 배경 위에서 CSV 행의 빛나는 표가 중첩된 JSON 객체로 변환되는 모습
평면 CSV 표가 중첩된 JSON 객체와 배열로 접히는 모습.

행과 헤더가 객체가 되는 방법

매핑은 보이는 것보다 간단합니다. CSV 파일의 첫 번째 줄은 보통 헤더 행이며, 이 헤더 이름이 JSON의 키가 됩니다. 이후의 모든 행은 각 셀이 일치하는 헤더와 짝을 이루는 하나의 객체가 됩니다. 전체 파일은 이 객체들의 배열이 됩니다. 따라서 name,email,age 열이 있는 CSV는 [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...]와 같은 목록이 됩니다. 반대로 JSON에서 CSV로 변환할 때는 첫 번째 객체의 키를 읽어 헤더 줄을 만든 다음, 객체당 한 줄씩 씁니다. 데이터가 진정으로 표 형태인 한 깔끔하고 예측 가능한 왕복 변환이 됩니다.

알아 두어야 할 함정

CSV는 단순해 보이지만 몇 가지 날카로운 모서리를 숨기고 있습니다. 가장 큰 것은 필드 안의 쉼표입니다. 주소에 "Berlin, Germany"가 포함된 경우, 쉼표에서 단순하게 분할하면 단일 값이 두 개의 열로 찢어집니다. CSV 표준은 그러한 필드를 큰따옴표로 감싸서 이를 처리하며, 따옴표 안의 따옴표는 두 개로 중복("")됩니다. 좋은 변환기는 이 규칙을 지켜 데이터가 조용히 열을 이동하지 않도록 합니다. 구분자도 주의하세요. 많은 유럽 내보내기는 이미 소수점 구분자인 쉼표 대신 세미콜론을 사용합니다. 탭과 파이프도 사용됩니다.

더 깊은 차이는 데이터 유형입니다. CSV에는 데이터 유형 개념이 전혀 없습니다. 모든 것이 텍스트이므로, 숫자 42, 불리언 true, 빈 셀이 모두 일반 문자열처럼 보입니다. 반면 JSON은 숫자, 문자열, 불리언, null, 중첩 구조를 구분합니다. CSV를 JSON으로 변환할 때는 도구에 숫자와 불리언을 해석하도록 지시하지 않는 한 값이 문자열로 도착합니다. JSON을 CSV로 변환할 때는 반대 문제가 있습니다. 중첩된 객체와 배열이 평면 격자에 깔끔하게 맞지 않으므로, 보통 하나의 셀 안에 평탄화되거나 문자열화됩니다. 이것을 미리 알면 나중에 열이 "왜 이상해 보이는지"에 대해 고민하지 않아도 됩니다.

청록색과 금색으로 빛나는 JSON 괄호 트리로 변형되는 스프레드시트 격자
스프레드시트 격자가 분기하는 JSON 괄호 트리로 변형되는 모습.

실제 왕복 사례

항상 마주치는 시나리오가 있습니다. 동료가 신규 사용자 스프레드시트를 보내며 내부 API를 통해 불러오도록 요청합니다. API는 JSON만 허용합니다. 시트를 CSV로 내보내고, 여기에 붙여넣으면 요청 페이로드에 바로 넣을 수 있는 깔끔한 객체 배열이 반환됩니다. 나중에 API가 생성한 레코드의 JSON 목록을 반환하고, 같은 동료가 검토할 수 있도록 그것을 돌려줘야 합니다. JSON을 붙여넣고 CSV로 변환하면 스프레드시트에서 바로 열립니다. 스크립트도, 설치도 없이 일반적인 작업 흐름 중간에 두 번의 빠른 번역만 있으면 됩니다.

설계상 로컬 전용

이 모든 것이 브라우저에서 실행됩니다. CSV와 JSON은 내 컴퓨터의 JavaScript에 의해 파싱되고 변환되며, 서버에 아무것도 업로드되지 않습니다. 내보내기에는 실제 이름, 이메일, 주문 세부 정보, 또는 무작위 원격 서비스에 붙여넣어서는 안 되는 내부 식별자가 포함된 경우가 많기 때문에 이것이 중요합니다. 여기서 데이터는 페이지를 벗어나지 않습니다. 결과물을 나중에 정리하고 싶다면 JSON 포매터가 예쁘게 출력하고 유효성을 검사해 주며, 관련 형식은 나머지 데이터 변환기에서 찾아볼 수 있습니다.

자주 묻는 질문

데이터가 어딘가에 업로드되나요?

아니요. 변환은 JavaScript를 사용하여 브라우저에서 완전히 실행됩니다. CSV와 JSON은 내 기기에 남아 서버로 전송되지 않습니다.

변환기가 필드 안의 쉼표를 처리하나요?

예. 쉼표가 포함된 필드는 CSV에서 큰따옴표로 감싸야 하며, 파서가 그 따옴표를 존중하여 값이 단일 열에 유지됩니다.

내 숫자가 JSON에서 텍스트로 표시되는 이유는 무엇인가요?

CSV에는 데이터 유형이 없으므로 모든 셀이 일반 텍스트입니다. 소스 파일에서 숫자와 단어를 구분할 방법이 없기 때문에 숫자와 불리언 파싱이 적용되지 않으면 값이 JSON 문자열이 됩니다.

JSON을 CSV로 변환할 때 중첩된 JSON은 어떻게 되나요?

평면 격자는 중첩 구조를 담을 수 없으므로, 중첩된 객체와 배열은 보통 평탄화되거나 하나의 셀 안에 문자열화된 값으로 기록됩니다.

쉼표 대신 세미콜론이나 탭을 사용할 수 있나요?

예. 특히 유럽 내보내기는 구분자로 세미콜론이나 탭을 사용하는 경우가 많으며, 도구가 표준 쉼표 대신 이것들을 읽을 수 있습니다.

양방향으로 변환되나요?

예. CSV를 JSON으로, JSON을 다시 CSV로 변환할 수 있어 스프레드시트와 API 사이의 왕복이 간편합니다.