← JSON 도구로 돌아가기

JSON을 CSV로 변환

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

JSON 객체 배열을 CSV 표로 변환합니다. 각 객체가 한 행이 되고 키가 열이 됩니다. 스프레드시트가 기대하는 규칙으로 따옴표를 붙입니다. 모든 처리는 브라우저 안에서 이루어지며 데이터는 기기를 떠나지 않습니다.

브라우저에서 실행 업로드 없음 RFC 4180 준수 Excel용 BOM 오픈 소스 (MIT)

이 변환이 하는 일

CSV 파일은 텍스트로 쓴 표입니다. 한 줄이 한 레코드이고, 칸 사이는 구분자로 나누며, 맨 윗줄에 열 이름을 둡니다. JSON에는 이런 형태가 없습니다. 둘이 만나는 가장 자연스러운 지점은 객체의 배열입니다. 각 객체가 한 레코드이고 그 키가 필드 이름이 됩니다. API가 목록을 반환할 때의 형태가 바로 이것이라, 이 도구는 우선 이를 받아들입니다.

[{"id":1,"name":"Ada"},{"id":2,"name":"Grace"}]를 넣으면 출력은 헤더 줄 id,name과 이어지는 두 줄 1,Ada, 2,Grace입니다. 아래 규칙을 빼면 순서를 바꾸거나 값을 다시 쓰지 않습니다.

표가 되는 JSON 형태

‘합집합’이라는 점이 중요합니다. 일부 레코드에만 phone 키가 있어도 헤더에는 phone이 들어가고, 그 키가 없는 행은 해당 칸이 빕니다. 열이 빠지지는 않습니다. 그 결과 구조가 고르지 않은 JSON에서는 대부분의 칸이 빈 열이 생깁니다.

중첩된 값은 텍스트가 됩니다

칸에는 텍스트만 들어가므로, 값 안에 중첩된 객체나 배열은 압축된 JSON으로 칸에 기록됩니다. {"address":{"city":"London"}}는 칸 {"city":"London"}이 됩니다. 정보는 남지만 더 이상 구조화되어 있지는 않습니다. 이 도구는 address.city를 점이 붙은 열로 펼치지 않습니다. 점이 붙은 열이 필요하면 먼저 JSON을 평탄화하세요. 그것은 모델링의 결정이지 서식의 문제가 아닙니다.

따옴표, 구분자, 줄바꿈

출력은 RFC 4180을 따릅니다. 모든 스프레드시트와 CSV 라이브러리가 합의한 규칙입니다.

구분자는 직접 고릅니다. 기본은 쉼표지만, 소수점에 쉼표를 쓰는 환경에서는 세미콜론이 더 안전합니다. 그렇지 않으면 쉼표로 구분한 파일이 그 환경에서 모호해집니다. 탭과 파이프는 데이터 자체에 쉼표가 들어 있을 때 유용합니다.

Excel에서 깨지지 않게 열기

Excel은 UTF-8을 무조건 읽지 않습니다. 바이트 순서 표시가 없는 .csv를 주면 인코딩을 추측하고, 흔히 오래된 코드 페이지를 골라 악센트 문자나 CJK 문자가 깨집니다. Excel용 BOM 추가 옵션은 내려받는 파일 맨 앞에 3바이트 UTF-8 표시를 붙여 Excel이 올바로 해석하게 합니다. 다운로드에만 적용되며, 여기 표시되는 텍스트는 그대로입니다.

CSV로 되돌릴 수 없는 것

CSV는 텍스트 형식이라 정보가 손실됩니다. 어떤 값이 숫자·불리언·null이었는지 잊어버리고, 중첩은 텍스트로 평탄화됩니다. null과 빈 문자열은 모두 빈 칸이 되고, 숫자는 그 자릿수가 됩니다. JSON으로 되돌리면 반대쪽 페이지에서 형식 감지를 켜지 않는 한 문자열이 됩니다. 켜더라도 007 같은 코드는 앞의 0을 지키기 위해 문자열로 남아야 합니다. 형식이 중요하면 원본 JSON을 보관하고, CSV는 내보내기일 뿐 원본이 아니라고 생각하세요.

자주 묻는 질문

어떤 형태의 JSON을 CSV로 변환할 수 있나요?

CSV는 표이므로 가장 자연스러운 입력은 객체의 배열입니다. 각 객체가 한 행이 되고 그 키가 열이 됩니다. 배열의 배열은 그대로 행으로 쓰이고, 단일 객체는 한 행이 되며, 단순한 값의 배열은 한 열이 됩니다. 그 밖의 경우——숫자나 문자열 하나, null——는 표가 아니므로 거부됩니다.

객체마다 키가 다르면 어떻게 되나요?

헤더는 배열 전체에 등장한 모든 키의 합집합이며, 처음 등장한 순서대로 배열됩니다. 해당 키가 없는 행은 그 칸이 비게 됩니다. 구조가 고르지 않은 JSON에서 만든 CSV에 대부분의 행에서 비어 있는 열이 생기는 이유가 이것입니다.

중첩된 객체와 배열은 어떻게 처리되나요?

CSV에는 중첩이 없으므로 값 자체가 객체나 배열이면 압축된 JSON 텍스트로 칸에 기록됩니다. 정보는 남지만 더 이상 구조화되어 있지는 않습니다. 이 변환은 문자열화로 평탄화하는 것이지, 중첩된 키를 점이 붙은 열로 펼치는 것이 아닙니다.

필드는 언제 따옴표로 감싸지나요?

필드에 구분자, 큰따옴표, 줄바꿈이 있거나 앞뒤에 공백이 있을 때 따옴표로 감쌉니다. 따옴표 안의 큰따옴표는 두 개로 바뀌어 텍스트가 정확히 재현됩니다. 이것이 RFC 4180 규칙이며, 한 칸에 쉼표나 줄바꿈을 담을 수 있는 이유입니다.

Excel에서 CSV가 깨져 보이는 이유는 무엇인가요?

Excel은 .csv 파일의 인코딩을 추측하는데, 바이트 순서 표시가 없으면 오래된 코드 페이지를 고르는 경우가 많아 악센트 문자나 CJK 문자가 깨집니다. BOM 옵션을 켜면 내려받는 파일 맨 앞에 U+FEFF가 붙어 Excel이 UTF-8로 해석합니다. BOM은 다운로드에만 적용되고 여기 표시되는 텍스트에는 영향을 주지 않습니다.

JSON에서 CSV로의 변환은 무손실인가요?

아니요. CSV는 텍스트를 저장하므로 어떤 값이 숫자·불리언·null이었는지 잊어버리고, 중첩은 텍스트로만 표현할 수 있습니다. CSV를 다시 JSON으로 바꾸면 형식 자동 감지를 켜지 않는 한 문자열이 됩니다. 형식을 정확히 되돌려야 한다면 원본 JSON을 보관하세요.

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