Json To Csv LogoJson To Csv

JSON 파일을 CSV로 변환하는 방법: 업로드, Excel, 명령줄 (2026 가이드)

내 JSON은 클립보드가 아니라 파일에 있어요. 완전한 파일 기반 작업 흐름을 소개합니다. 먼저 파일을 검증한 뒤, 무료 온라인 업로더, Excel Power Query, 또는 명령줄 스크립트로 변환하세요. 대용량 파일, 인코딩, 흔한 파일 오류 대처법까지 함께 다룹니다.

업데이트: 2026-10-0810 분 소요

JSON 파일을 변환하는 일 자체가 하나의 기술인 이유

대부분의 변환 튜토리얼은 JSON이 이미 클립보드에 있다는 전제에서 시작합니다. 현실은 파일에서 시작하죠. 다운로드 폴더에 놓인 data.json, 저장해 둔 API 익스포트, 어떤 앱의 백업. 파일로 작업하면 클립보드 붙여넣기가 건너뛰는 한 겹이 더 생깁니다. 인코딩, 파일 크기, 줄 바꿈, 디스크에 실제로 들어 있는 데이터의 모양. 그리고 그 하나하나가 조용히 결과를 바꿀 수 있어요.

좋은 소식도 있습니다. 파일은 한 가지 면에서 더 쉬워요. 반복 가능한 작업 순서를 강제하거든요. .json 파일에서 .csv 파일로 가는 길을 한 번만 익히면, 파일이 3KB든 300MB든, 한 번 하든 백 번 하든 똑같이 적용됩니다. 이 가이드에서는 그 작업 흐름을 처음부터 끝까지 다룹니다. 파일을 구하고, 검사하고, 세 가지 방법으로 변환하고, CSV를 깨지지 않게 여는 법까지요.

내 JSON 파일은 어디에서 왔을까 (그리고 왜 그게 중요한지)

JSON 파일은 몇 안 되는 경로로 우리에게 도착합니다. 어느 경로인지 알면 안에 뭐가 들어 있을지 예상할 수 있어요.

  • API 익스포트와 다운로드. 대시보드의 "내보내기"나 "JSON 다운로드" 버튼, 또는 curl로 API를 호출해 디스크에 저장한 결과. 보통 레코드 배열 형태라 CSV로 바꾸기에 가장 좋은 모양이지만, 수백 MB까지 커질 수 있어요.
  • 앱 백업. 메신저, 메모 앱, 비밀번호 관리자는 내 데이터를 JSON으로 내보내줍니다. 기계가 읽으라고 만든 거지 스프레드시트용이 아니라서, 객체 안에 객체가 들어간 깊이 중첩된 구조인 경우가 많습니다.
  • 브라우저 개발자 도구. 네트워크 응답을 우클릭해서 "다른 이름으로 저장"하면 .json 파일 하나가 생겨요. 빠르고 편하지만, 응답 본문을 저장한 건지 그 주변 HTML 껍데기를 저장한 건지 꼭 다시 확인하세요.
  • 이메일 첨부와 공유 드라이브. 동료의 익스포트가 data.json으로 도착합니다. 검증되기 전까진 의심하고 다루세요. 메일 서버를 몇 군데 거친 첨부는 인코딩 손상을 입을 수 있어요.

변환기를 건드리기 전에 텍스트 편집기로 파일을 열어 첫 몇 줄을 보세요. 맨 위에 [가 보이면 레코드 배열입니다. 이상적인 모양이죠. {가 보이면 단일 객체로, 중첩 구조를 펼쳐야 할 수도 있어요. 둘 다 변환은 되지만, 후자는 평탄화 옵션을 켜야 합니다.

0단계: 변환하기 전에 파일 검증하기

이 페이지의 모든 변환기는 문법 오류가 있는 파일을 거부합니다. 게다가 오류 메시지가 문제 위치를 알려주지 않을 때도 있어요. 순서는 검증 먼저, 변환 나중. 10초면 끝나고 "왜 변환이 안 되지"라는 가장 흔한 미스터리를 없애줍니다.

Python이 설치되어 있다면 도구 없이 가장 빨리 검사할 수 있어요. 내 파일에 이렇게 실행하세요. 성공하면 아무것도 출력하지 않고, 실패하면 문제가 있는 줄을 가리키는 오류와 함께 종료됩니다.

Terminal
# Validate data.json (quiet on success, points at the error on failure)
python3 -m json.tool data.json > /dev/null && echo "valid JSON"

흔한 범인은 끝에 남은 쉼표, 작은따옴표로 감싼 문자열, 채팅 앱이나 문서에서 붙여 넣은 스마트 따옴표입니다. 전부 JSON에서는 불법이에요. 타이핑보다 클릭이 편하다면 저희 JSON 포맷터 가이드를 따라 무료 온라인 검증기를 쓰세요. 브라우저에서 동작하는 걸 고르면 파일이 내 컴퓨터에 그대로 남습니다.

걱정 안 해도 되는 것 하나. 한 줄짜리 거대한 파일입니다. 압축(minified)된 JSON은 텍스트 편집기에서 보면 무섭지만, 완전히 유효하고 아래 모든 방법이 문제없이 처리해요. 다만 직접 읽을 수 없을 뿐이죠. 그래서 검증기가 중요한 겁니다.

방법 1: 무료 온라인 변환기에 파일 업로드하기

한 번만 변환하는 파일이라면 업로드가 어떤 방법보다 빠릅니다. 좋은 변환기는 텍스트 붙여넣기뿐 아니라 떨어뜨린 .json 파일도 받아줘요. 파일을 열어서 내용을 손으로 복사할 일이 없어야 합니다. 인코딩 손상과 잘린 붙여넣기는 바로 그런 수작업에서 생기거든요.

저희 무료 변환기를 예로 든 작업 순서는 이렇습니다.

  • 변환기를 열고 업로드 영역에 .json 파일을 끌어다 놓으세요. 또는 클릭해서 찾아보기. 파일은 디스크에서 바로 읽힙니다. 복사 붙여넣기는 없어요.
  • 변환 전에 옵션을 설정하세요. 파일에 중첩 객체가 있으면 평탄화를 켜세요. 변환기가 customer.name을 점 찍힌 열로 만들어줍니다. 구분자를 고르세요. 미국/영국 Excel은 쉼표, 대부분 유럽 지역은 세미콜론. 헤더는 켜둔 채로 두세요.
  • 변환을 누르고 .csv를 다운로드하세요. 파일은 브라우저 탭 안에서 생성되니까 어떤 서버에도 업로드되지 않습니다.

변환기가 정말 브라우저에서 동작하는지 어떻게 알 수 있을까요? 오프라인 테스트가 있어요. 페이지를 로드하고 네트워크를 끊은 뒤 변환해 보세요. 클라이언트 측 도구는 계속 동작합니다. 이게 중요한 이유는 업무용 JSON 파일에 고객 이메일, API 키, 내부 데이터가 들어 있는 경우가 많기 때문이에요. 남의 서버에 그런 게 올라가면 안 되죠. 파일이 민감하다면 이 테스트는 필수입니다.

이 방법의 현실적인 한계는 파일 크기입니다. 브라우저 탭은 몇 MB까지는 편안하게 처리하지만, 그 이상이면 문서 전체가 메모리에 올라가 탭이 느려져요. 파일이 수십 MB 이상이라면 탭과 싸우지 말고 아래 명령줄 방법으로 넘어가세요.

무료 변환기에 .json 파일을 끌어다 놓으세요

방법 2: Excel에서 JSON 파일 바로 열기

최종 목적지가 스프레드시트라면 중간 단계를 통째로 건너뛸 수 있습니다. 최신 Excel은 Power Query로 JSON 파일을 네이티브로 열어요. 어차피 Excel에서 데이터를 분석할 거라면 가장 깔끔한 선택입니다.

  • Excel에서 Data > Get Data > From File > From JSON 순서로 눌러 .json 파일을 선택하세요.
  • Power Query가 레코드를 테이블로 보여줍니다. 어떤 열에 중첩 레코드가 들어 있으면 그 열 헤더의 확장 아이콘을 눌러 각자의 열로 펼치세요. 평탄화의 시각적 버전이에요.
  • Close & Load를 눌러 워크시트에 테이블을 올린 뒤, File > Save As로 .csv 파일을 쓰세요.

솔직한 주의점 두 가지. 첫째, Google Sheets는 JSON 파일을 네이티브로 열 수 없어요. .json용 File > Import 경로가 없습니다. 다른 방법으로 먼저 CSV로 변환한 뒤 File > Import를 쓰세요. 둘째, 저장할 때 구분자를 신경 쓰세요. 사용 중인 지역의 Excel이 세미콜론을 기대한다면, 나중에 가져오기 마법사와 싸우지 말고 세미콜론 구분자로 저장하거나 다시 내보내세요.

방법 3: 명령줄에서 파일 변환하기

변환이 더 큰 작업의 한 단계일 때, 로컬 스크립트가 어떤 도구를 클릭하는 것보다 낫습니다. 일일 익스포트, 빌드 스크립트, 데이터 파이프라인 같은 경우죠. 대용량 파일을 편하게 다루는 유일한 방법이기도 해요. 데이터 팀이 실제로 쓰는 두 명령어를 소개합니다. 둘 다 이 컴퓨터에서 실제 orders.json 파일로 테스트했어요.

pandas를 쓰는 Python이 일꾼입니다. 파일을 읽고, 중첩 객체를 점 표기법 열로 펼친 뒤, BOM을 붙인 CSV로 써서 Excel이 UTF-8을 자동으로 인식하게 해요.

Python
import pandas as pd

# Read the file straight from disk
df = pd.read_json("data.json")

# Flatten nested objects to dot-notation columns (customer.name)
df = pd.json_normalize(df.to_dict("records"))

# utf-8-sig adds a BOM so Excel detects the encoding correctly
df.to_csv("data.csv", index=False, encoding="utf-8-sig")
print(f"wrote data.csv ({len(df)} rows)")

jq는 몇 개 필드만 필요할 때 가벼운 선택입니다. 이 한 줄은 orders.json을 읽어 레코드마다 세 필드를 뽑아요. customer.name 같은 중첩 필드까지. 제대로 된 RFC 4180 CSV를 표준 출력에 찍어줍니다. 파일로 리다이렉트하면 끝이에요.

파일용 한 줄 터미널 대안

아래 jq 명령어는 이 컴퓨터에서 실제 JSON 파일로 테스트했습니다. 중첩된 customer와 pricing 객체를 가진 주문 레코드 두 개에서 주문 ID, 중첩된 고객 이름, 중첩된 합계를 뽑아 따옴표로 감싼 CSV 행으로 만들었어요.

Terminal
$ jq -r '.[] | [.orderId, .customer.name, .pricing.total] | @csv' orders.json
"ORD-1","Ana",10.5
"ORD-2","Bo",7.25

@csv 필터가 따옴표와 이스케이프를 알아서 처리하고, .customer.name 문법은 평탄화 단계 없이 중첩 객체에 바로 들어갑니다. 이미 열어 둔 파일을 터미널에서 빨리 다룰 때는 이만한 게 없어요.

여러 JSON 파일을 한 번에 변환하기

익스포트가 파일 하나로 오는 경우는 드뭅니다. 한 달치 덤프가 .json 파일 서른 개일 수 있어요. 브라우저 탭에서 하나씩 변환하면 오후가 다 갑니다. 위 Python 스크립트의 배치 버전은 폴더를 돌면서 모든 파일을 변환하고, 원본 이름을 딴 CSV로 저장해요.

Python
import pandas as pd, glob

# Convert every .json file in exports/ to its own .csv
for path in sorted(glob.glob("exports/*.json")):
    df = pd.json_normalize(pd.read_json(path).to_dict("records"))
    out = path.rsplit(".", 1)[0] + ".csv"
    df.to_csv(out, index=False, encoding="utf-8-sig")
    print(f"{path} -> {out} ({len(df)} rows)")

이건 샘플 파일 두 개로 이 컴퓨터에서 테스트했습니다. 각자 자신의 CSV를 만들었고, 펼친 열 orderId,customer.name,pricing.total과 파일별 행 수를 출력해서 어느 파일이 비어 나왔는지 한눈에 알 수 있어요. 주의 하나. 이 스크립트는 모든 파일의 모양이 같다고 가정합니다. 폴더에 서로 다른 익스포트가 섞여 있다면 모양별로 따로 변환하세요. 키 집합이 다른 걸 한 CSV에 합치면 헷갈리고 듬성듬성한 격자가 됩니다.

브라우저 탭을 멈추게 하는 대용량 JSON 파일

브라우저 탭은 문서 전체를 메모리에 올립니다. 그래서 수십에서 수백 MB 파일은 탭을 얼리거나 터뜨려요. 경험 법칙은 이렇습니다. 몇 MB는 브라우저에서 괜찮고, 그보다 크면 로컬에서 변환하세요. 로컬 도구에는 탭의 메모리 한도가 없습니다.

  • jq는 스트리밍합니다. 단순 필드 추출은 파일 전체를 메모리에 올리지 않아서 GB급 로그에서도 빨라요.
  • pandas를 쓴 Python은 평범한 노트북에서도 수백 MB를 처리합니다. 위 스크립트가 그대로 동작해요.
  • 정말 거대한 파일이라면, 익스포트를 한 줄에 JSON 객체 하나씩으로 나눌 수 있는지 확인하세요. 줄 단위 JSON, 즉 JSON Lines입니다. 레코드 하나씩 처리해서 문서 전체를 메모리에 올릴 필요가 없어요.

크기와 상관없이 먼저 검증하세요. 2GB 파일에서 문법 오류 하나를 찾는 건, python3 -m json.tool(또는 스트리밍 검증기)로 하는 게 5분짜리 업로드가 실패하는 걸 지켜보는 것보다 훨씬 쉽습니다.

CSV가 생긴 뒤: 깨지지 않게 여는 법

변환이 완벽해도 스프레드시트가 이상하게 보일 수 있어요. CSV를 여는 것 자체가 하나의 작은 기술이거든요. "CSV가 깨져 보여요" 신고의 거의 전부를 해결하는 세 가지 수정법이 있습니다.

  • 인코딩. 악센트 문자가 깨진 글자로 나오면, 파일을 ANSI가 아니라 UTF-8로 읽었기 때문입니다. 다시 가져오면서 파일 원본을 65001: UTF-8로 설정하세요. 위 Python 스크립트는 Excel이 스스로 인식하도록 일부러 BOM을 씁니다.
  • 구분자. 모든 게 한 열에 몰리면 사용 중인 Excel이 세미콜론을 기대하는 겁니다. 유럽 지역에서 흔해요. 가져오기와 싸우지 말고 세미콜론 구분자로 다시 내보내세요.
  • 앞자리 0. 07477 같은 우편번호와 ID는 스프레드시트가 "숫자"로 추측하면서 0이 날아갑니다. 가져올 때 열 서식을 텍스트로 지정하거나, 앞에 작은따옴표를 붙이세요.

그리고 원본 .json 파일은 보관하세요. 변환은 파일을 읽기만 하고 바꾸지 않습니다. JSON은 손대지 않은 채 남아요. 보관은 공짜입니다. CSV는 일방향 단순화예요. 다시 변환해도 데이터 타입이나 펼쳐진 열이 복원되지 않습니다.

파일 오류와 해결 방법

파일은 붙여넣기 텍스트에는 없는 실패 모드를 추가합니다. 변환기가 내 파일을 거부하면, 다른 무엇보다 이 목록부터 훑어보세요.

  • 잘못된 확장자. Notepad에서 data.json.txt로 저장된 파일, 또는 실패한 다운로드의 HTML이 든 .json은 파싱되지 않습니다. 첫 줄을 여세요. <html>이 보이면 JSON이 아니라 오류 페이지를 다운로드한 겁니다.
  • 인코딩 손상. 이메일을 거치거나 잘못된 인코딩으로 저장된 파일에는 깨진 문자가 섞일 수 있어요. UTF-8로 다시 저장하세요. 확신이 안 서면 0단계의 검증기가 읽을 수 없는 부분을 짚어줍니다.
  • 파일은 멀쩡한데 너무 큽니다. 대용량 파일 섹션을 보세요. 이건 데이터 문제가 아니라 도구 문제예요.
  • 줄 바꿈. CRLF냐 LF냐는 JSON 파싱에 전혀 영향을 주지 않습니다. 변환기가 줄 바꿈 탓을 한다면 진짜 문제는 다른 데 있어요. 대개 위의 셋 중 하나죠.

"파일 변환이 안 돼요" 신고의 90퍼센트는 이 넷 중 하나에서 끝납니다. 나머지 10퍼센트는 진짜로 유효하지 않은 JSON이고, 검증기가 문제 줄을 바로 가리켜요.

어떤 파일 작업 방식을 골라야 할까?

이 페이지의 모든 방법은 같은 파일을 읽어 같은 입력에 같은 CSV를 만듭니다. 선택 기준은 편의, 개인정보, 규모예요. 상황에 맞춰 고르세요.

  • 파일 하나, 몇 MB 이하. 무료 온라인 변환기에 끌어다 놓으세요. 압도적으로 가장 빠릅니다.
  • 파일에 민감한 데이터. 클라이언트 측 변환기, Excel, 또는 로컬 스크립트. 먼저 업로드하는 건 안 돼요.
  • 스프레드시트가 목적지. Excel의 JSON에서. 변환기는 건너뜁니다.
  • 여러 파일이나 정기 작업. Python 배치 스크립트. 버전 관리되고 재실행 가능해요.
  • 거대한 파일. 로컬 도구만. jq, Python, 또는 줄 단위 처리.

그리고 이 모든 것의 바탕이 되는 습관. 변환 전에 파일을 검증하고, 변환 후에는 원본을 보관하고, CSV를 열 때는 인코딩을 확인하세요. 이 세 가지만 하면 JSON 파일이 가장 다루기 쉬운 입력이 됩니다.

관련 가이드

자주 묻는 질문

JSON 파일을 아무것도 설치하지 않고 CSV로 변환할 수 있나요?

네. 브라우저에서 동작하는 무료 온라인 변환기에 .json 파일을 끌어다 놓으세요. 설치도 계정도 없이 CSV를 다운로드할 수 있어요. Excel이 이미 설치되어 있다면 Data > Get Data > From File > From JSON이 별도 설치 없이 파일을 네이티브로 열어줍니다.

내 JSON 파일을 온라인 변환기에 업로드해도 안전한가요?

변환이 내 브라우저 안에서 일어날 때만 안전합니다. 이 사이트 같은 클라이언트 측 변환기는 디스크에서 파일을 읽어 CSV를 로컬에서 생성하니까, 데이터가 내 컴퓨터를 떠나지 않아요. 페이지를 로드한 뒤 네트워크를 끊어보세요. 그래도 변환되면 클라이언트 측이니 민감한 파일에도 안전합니다.

JSON 파일을 변환한 뒤 Excel이 CSV 전체를 한 열에 넣는 이유는 뭔가요?

사용 중인 Excel이 다른 구분자를 기대하기 때문입니다. 유럽 지역에서는 보통 세미콜론이에요. 가져오기 마법사와 싸우지 말고 CSV를 세미콜론 구분자로 다시 내보내거나, Data > From Text/CSV를 쓰고 가져올 때 구분자를 직접 지정하세요.

아주 큰 JSON 파일은 어떻게 CSV로 변환하나요?

브라우저 탭이 아니라 로컬에서 변환하세요. jq는 단순 필드 추출에 GB급 파일을 스트리밍하고, pandas를 쓴 짧은 Python 스크립트는 평범한 노트북에서도 수백 MB를 처리해요. 먼저 파일을 검증하세요. 거대한 파일에서 문법 오류 하나를 찾는 건, 변환 시도 실패 뒤보다 전이 훨씬 쉽습니다.

여러 JSON 파일을 한 번에 CSV로 변환할 수 있나요?

네. 짧은 배치 스크립트가 폴더를 돌면서 모든 파일을 변환하고, 원본 이름을 딴 CSV로 저장합니다. 이 가이드의 Python 스니펀이 pandas로 정확히 그렇게 동작하고, 파일별 행 수를 출력해서 빈 결과를 바로 알 수 있어요. 데이터 모양이 다르면 따로 변환하세요. 키 집합이 다른 걸 합치면 헷갈린 격자 하나가 됩니다.

내 JSON 파일이 변환되지 않습니다. 뭐가 문제인가요?

거의 항상 넷 중 하나입니다. 파일이 유효한 JSON이 아니다. python3 -m json.tool을 실행하면 오류 위치가 나와요. "JSON"이 실패한 다운로드의 HTML 오류 페이지다. 브라우저 탭에 비해 파일이 너무 크다. 확장자가 거짓말을 한다. data.json.txt처럼요. 먼저 검증하세요. 몇 초 만에 정확한 문제를 짚어줍니다.

변환하면 원본 JSON 파일이 바뀌거나 지워지나요?

아니요. 이 가이드의 모든 방법은 파일을 읽어 새 CSV를 쓸 뿐, 원본 .json은 손대지 않습니다. 아카이브로 보관하세요. CSV는 일방향 단순화라서, CSV를 다시 변환해도 데이터 타입이나 중첩 구조가 복원되지 않아요.

여러분의 JSON 파일이 스프레드시트가 될 준비가 되었습니다

무료 변환기에 .json 파일을 끌어다 놓고, 몇 초 만에 깨끗하고 바로 쓸 수 있는 CSV를 다운로드하세요. 가입 없이, 파일이 브라우저를 떠나는 일도 없습니다.

지금 JSON 파일 변환하기
모든 가이드