JSON을 CSV로 변환하는 방법: 먼저 데이터 구조를 확인한 후 시작하세요
JSON을 CSV로 변환하는 방법은 데이터가 평면 구조인지 중첩 구조인지에 따라 달라집니다. 평면 배열은 바로 표로 매핑할 수 있지만, 중첩 객체는 먼저 평탄화하거나 여러 행으로 펼쳐야 합니다. 아래에서는 데이터 구조, 작업 단계, 흔한 오류라는 세 가지 흐름으로 전체 과정을 설명합니다.
JSON을 CSV로 변환하는 것이 무엇인지 이해하는 것이 변환 방식을 선택하는 전제입니다. JSON은 키-값 쌍과 배열로 계층 관계를 표현하고, CSV는 쉼표로 구분된 2차원 행과 열만 사용합니다. 두 형식의 표현력이 동등하지 않기 때문에 변환 과정에는 반드시取舍(선택과 포기)가 따릅니다.
JSON을 CSV로 변환하는 것이란
JSON을 CSV로 변환하는 것이 무엇인지는 두 문장으로 나눠 이해할 수 있습니다. JSON은 계층이 있는 텍스트 형식이고, CSV는 순수한 2차원 표 형식입니다. 변환의 본질은 계층을 행과 열로 압축하는 것입니다. 배열의 각 객체는 보통 한 행이 되고, 객체의 키는 헤더가 됩니다.
주의할 점은 객체 안에 또 객체나 배열이 있을 때 평탄화 방식이 하나가 아니라는 것입니다. 내부 키를 user.name 같은 경로명으로 이어 붙일 수도 있고, 배열을 여러 행으로 나누어 외부 필드를 반복할 수도 있습니다. 어떤 방식을 선택할지는 이후 표에서 어떤 통계를 낼지에 따라 달라집니다.
시작하기 전에 JSON이 어떤 모양인지 판단하세요
파일을 열고 가장 바깥이 어떤 기호인지 먼저 보세요. 이 단계만으로 이후 대부분의 재작업을 줄일 수 있습니다.
- 가장 바깥이 대괄호
[: 안에 객체 배열이 있는 가장 이상적인 경우로 바로 변환할 수 있습니다. - 가장 바깥이 중괄호
{: 먼저 목록을 담고 있는 키를 찾으세요. 예를 들어data,items,records같은 키의 값을 변환 대상으로 사용합니다. - 필드 안에 중첩이 있는 경우: 경로명으로 이어 붙일지, 배열을 여러 행으로 펼칠지 먼저 결정하세요. 두 결과는 완전히 다릅니다.
- 필드명이 일정하지 않은 경우: 객체마다 나타나는 키가 다르면 없는 키는 비워집니다. 이것이 예상한 결과인지 미리 확인해야 합니다.
모양을 판단하는 이 단계를 마치면 이후 발생할 오류의 90%를 미리 피할 수 있습니다.
JSON을 CSV로 변환하는 방법: 단계별 작업
- 원본 JSON을 텍스트 편집기에 복사하고 인코딩이 UTF-8인지 확인하여 한글이 깨지지 않게 하세요.
- 실제 배열 계층을 찾으세요. 가장 바깥이 객체라면 먼저 목록이 있는 키를 찾으세요.
- JSON을 변환 도구의 입력란에 붙여넣으세요. 도구는 브라우저에서 로컬로 파싱하며 데이터는 업로드되지 않습니다.
- 구분자를 선택하세요. 기본값인 쉼표면 충분합니다. 필드 내용 자체에 쉼표가 있으면 세미콜론으로 바꾸거나 따옴표로 감싸세요.
- 중첩 필드 처리 방식을 선택하세요. 경로명으로 이어 붙이기는 전체 정보를 보존하는 데 적합하고, 행으로 펼치기는 그룹 통계에 적합합니다.
- 미리보기 헤더가 예상과 일치하는지 확인하세요. 특히
0,1같은 배열 인덱스 열이 추가로 생기지 않았는지 보세요. - CSV를 내보내고 표 소프트웨어로 열어 열 수와 행 수가 원본 배열 길이와 맞는지 확인하세요.
브라우저 로컬 변환 도구에서 위 단계를 수행하면 전 과정에서 인터넷으로 데이터를 제출할 필요가 없습니다.
JSON을 CSV로 변환할 수 없을 때: 흔한 원인과 점검
JSON을 CSV로 변환할 수 없을 때 대부분은 도구가 고장 난 것이 아니라 입력 자체가 변환 조건을 충족하지 않는 것입니다. 아래 순서대로 점검하면 문제를 거의 찾을 수 있습니다.
- 문법 오류: 쉼표가 하나 더 있거나, 따옴표가 하나 빠졌거나, 큰따옴표 대신 작은따옴표를 사용하면 파서가 바로 거부합니다.
- 가장 바깥이 배열이 아님: 많은 도구가 객체 배열만 허용하므로 단일 객체를 만나면 오류가 납니다. 먼저 대괄호로 한 겹 감싸야 합니다.
- 배열에 객체가 아닌 요소가 섞임: 객체와 문자열 또는 숫자가 함께 있으면 헤더를 통일할 수 없습니다.
- 필드 수 차이가 너무 큼: 어떤 객체는 키가 수십 개이고 어떤 객체는 하나뿐이면 헤더가 매우 넓어집니다.
- 인코딩 문제: 파일에 BOM이 있거나 UTF-8이 아닌 인코딩을 사용하면 한글이 오류 대신 깨져 보입니다.
입력이 유효한데도 계속 실패하면 데이터 앞 5개만 잘라서 따로 시도해 보세요. 데이터 문제인지 용량 문제인지 빠르게 구분할 수 있습니다.
JSON을 CSV로 변환하는 대용량 파일: 용량과 메모리 처리
JSON을 CSV로 변환하는 대용량 파일은 메모리에서 가장 쉽게 막힙니다. 브라우저 방식은 전체 파일을 메모리에 읽은 뒤 파싱하므로 파일이 클수록 점유율이 높아지고, 수백 MB 이상이면 탭이 응답하지 않을 수 있습니다.
처리 방법은 세 가지입니다. 첫째, 시간이나 업무 필드 기준으로 원본 파일을 먼저 나누고分批 변환한 뒤 병합합니다. 둘째, 변환에 필요 없는 필드를 삭제해 용량을 줄입니다. 셋째, 도구가 스트리밍 처리를 지원하는지 확인하고 지원하지 않으면 전체 파일을 한 번에 넣지 마세요.
내보낸 CSV도 용량을 주의해야 합니다. 일부 표 소프트웨어는 행 수에 상한이 있어 초과분이 잘릴 수 있으므로 변환 전에 행 수를 추산하세요.
JSON을 CSV로 변환하는 것과 온라인 표 변환의 차이
JSON을 CSV로 변환하는 것과 온라인 표 변환의 차이는 주로 처리 대상에 있습니다. 전자는 개발자를 대상으로 하며 입력은 API가 반환한 원본 텍스트이고 출력은 프로그램이나 데이터 분석에 쓰는 파일입니다. 후자는 일상 사무를 대상으로 하며 입력과 출력 모두 이미 서식이 잡힌 표 파일입니다.
구체적 차이는 세 가지로 나타납니다. 변환 방향이 단방향인지 양방향인지, 표의 수식과 서식을 보존할 수 있는지, 데이터 구조를 이해해야 하는지입니다. JSON을 CSV로 변환하는 것과 온라인 표 변환의 차이는 오류 허용 전략에도 있습니다. 전자는 문법 오류에 관대하지 않고, 후자는 보통 셀 내용을 자유롭게 입력해도 허용합니다.
API 디버깅 JSON을 CSV로 변환: 응답을 읽기 쉬운 표로 만들기
API 디버깅 중 JSON을 CSV로 변환하는 것은 빈번한 시나리오입니다. API 응답 본문은 여러 겹 중첩되는 경우가 많아 직접 보면 필드를 대조하기 어렵지만, 표로 변환하면 어떤 필드가 비었는지, 어떤 필드 유형이 잘못됐는지 한눈에 알 수 있습니다.
방법은 응답 본문을 도구 입력란에 복사하고 목록이 있는 키를 중점 확인하는 것입니다. 페이지네이션 API는 보통 데이터를 data.list 같은 경로에 두므로 id, name, created_at이 포함된 열을 우선 확인하세요. API 디버깅 중 JSON을 CSV로 변환할 때 특정 열이 전체 비어 있다면 대개 필드 경로 계층을 잘못 선택한 것입니다.
자주 묻는 질문
필드 자체에 쉼표가 있으면 어떻게 하나요
해당 필드를 따옴표로 전체 감싸면 쉼표가 구분자가 아니라 내용으로 처리됩니다. 내보낸 뒤 표 소프트웨어로 열어 한 열이 두 열로 나뉘었는지 확인하는 것이 올바르게 처리됐는지 판단하는 직접적인 방법입니다.
중첩 객체를 변환했더니 긴 문자열이 되면 어떻게 하나요
이것은 기본 평탄화 결과이며 내부 키가 경로명으로 이어 붙은 것입니다. 일부 필드만 남기고 싶다면 변환 전에 불필요한 중첩 구조를 삭제하면 헤더가 훨씬 깔끔해집니다.
한글이 깨져 보이면 어떻게 해결하나요
먼저 원본 파일이 UTF-8 인코딩인지 확인하세요. 원본 파일은 정상인데 내보낸 뒤 깨진다면 표 소프트웨어에서 열 때 기본 인코딩으로 바로 여는 대신 올바른 인코딩을 선택했는지 확인하세요.
변환 후 행 수가 배열 길이보다 적습니다
보통 핵심 필드가 없는 객체가 건너뛰어졌거나 도구가 기본적으로 중복 제거한 경우입니다. 원본 배열 길이와 내보낸 행 수를 대조하면 차이가 곧 버려진 레코드 수입니다.
원본 필드 순서를 유지할 수 있나요
대부분의 도구는 키가 처음 나타난 순서대로 헤더를 생성합니다. 순서가 예상과 다르면 원본 데이터에서 키 배열을 통일하거나 변환 후 열 순서를 수동으로 조정하세요.
마무리
JSON을 CSV로 변환하는 방법의 핵심은 세 단계입니다. 데이터 모양 판단, 중첩 필드 처리 방식 결정, 내보낸 행과 열이 원본 데이터와 일치하는지 확인. 작은 샘플에서 먼저 흐름을 통과시킨 뒤 전체 파일을 처리하면 대부분의 재작업을 피할 수 있습니다. 바로 시도하려면 /tools/json-to-csv에서 로컬로 변환을 완료할 수 있습니다.