결론부터: 네, 가능합니다. 단, 하나의 조건이 있습니다
네, JSON을 CSV로 변환할 수 있습니다. 단 하나의 조건은 구조입니다. CSV 파일은 행과 열로 이루어진 평탄한 표이기 때문에, JSON도 그렇게 표현할 수 있어야 합니다. 다행히 실제 JSON의 대부분은 이미 그렇습니다. API, 데이터 내보내기, 로그는 대부분 레코드의 목록(객체들의 배열)이나 단일 레코드(객체 하나)를 반환하고, 둘 다 스프레드시트에 자연스럽게 들어갑니다. 객체 하나가 한 행, 키 하나가 한 열이 되죠.
사람들이 막히는 지점은 변환 자체가 아니라 데이터의 형태입니다. JSON은 중첩을 허용합니다. 객체 안의 객체, 객체 안의 리스트. 하지만 CSV에는 중첩이라는 개념이 없습니다. 그래서 "JSON을 CSV로 변환할 수 있나요?"라는 질문 뒤에는 대개 세 가지 작은 질문이 숨어 있습니다. 중첩된 데이터는 살아남을지, 뭔가 손실되는 건 없는지, 특별한 소프트웨어가 필요한지. 답은 이렇습니다. 평탄화하면 중첩도 살아남고, 조심하면 손실은 거의 없으며, 특별한 소프트웨어는 필요 없습니다. 무료 브라우저 도구로 대부분의 파일을 처리할 수 있습니다.
CSV가 요구하는 것, JSON이 주는 것
CSV 파일은 일부러 단순합니다. 첫 행이 컬럼 이름을 정하고, 그 뒤의 모든 행은 같은 순서로 값을 담습니다. 그게 전부입니다. 데이터 타입도 없고(전부 텍스트), 중첩도 없고, 주석도 없고, 수식도 없습니다. 반면 JSON은 훨씬 유연합니다. 값은 문자열, 숫자, 불리언, null, 객체, 배열이 될 수 있고, 원하는 만큼 깊게 중첩할 수 있습니다.
이 차이가 이 변환의 전부입니다. JSON을 CSV로 바꾼다는 건 JSON 문서의 모든 조각에 대해 어느 행, 어느 열에 들어갈지 정한다는 뜻입니다. 흔한 형태에서는 매핑이 자명합니다.
- 평탄한 객체들의 배열은 객체 하나가 한 행, 키 하나가 한 열이 됩니다. 완벽한 경우입니다.
- 평탄한 객체 하나는 헤더 행 아래 한 행이 됩니다. 자명합니다.
- ["a", "b"] 같은 단순한 값들의 배열은 값 하나당 한 행인 단일 컬럼이 됩니다.
- 중첩된 객체나 객체를 담은 배열은 먼저 평탄화해야 합니다. 다음 섹션에서 다룹니다.
JSON이 첫 번째 형태라면, API 응답이라면 대개 그렇듯이, 변환은 생각할 것 없이 한 번의 클릭으로 끝납니다. 이 가이드의 나머지는 나머지 모든 경우를 위한 것입니다.
JSON이 CSV로 완벽하게 변환되는 경우
이상적인 입력은 이렇습니다. 모든 객체가 같은 평탄한 키를 가진 JSON 배열. 객체 하나가 한 행이 되고, 키 하나가 컬럼 헤더가 되며, 아무것도 새로 만들거나, 추측하거나, 버리지 않습니다.
[
{"name": "Ana", "email": "ana@example.com", "plan": "pro"},
{"name": "Bo", "email": "bo@example.com", "plan": "free"}
]이렇게 하면 헤더 행 name,email,plan 뒤에 데이터 행 두 줄이 오는 CSV가 됩니다. 손실 없고, 되돌릴 수도 있는 매핑이죠. 이 사이트의 무료 변환기가 한 번의 붙여넣기로 처리하는 형태이며, 아래의 Excel Power Query와 Python 코드 조각도 같은 형태를 기대합니다. 배열 안의 모든 객체가 같은 키를 갖고 있다면 더 읽을 필요 없이 바로 변환하면 됩니다.
약간의 변형도 괜찮습니다. 몇몇 객체에 키가 빠져 있어도 해당 행은 그 컬럼에 빈 셀로 들어갈 뿐입니다. 변환기는 모든 객체의 키를 합집합으로 모으므로, 들쭉날쭉한 데이터도 실패하지 않고 자연스럽게 처리됩니다.
복잡해지는 지점: 중첩된 객체와 배열
실제 JSON은 완벽하게 평탄한 경우가 드뭅니다. 주문 레코드는 고객 정보를 customer.name 안에, 합계를 pricing.total 안에 파묻고 있을 수 있습니다. CSV에는 "안"이라는 개념이 없으므로, 변환기는 중첩을 컬럼 이름에 녹여 평탄화합니다. 점 표기법을 쓰는 거죠. customer.name은 말 그대로 customer.name이라는 컬럼이 되고, 값은 그 컬럼에 들어갑니다.
정확히 어떤 일이 벌어지는지 보여주기 위해, 이 사이트 자체의 변환기 엔진으로 중첩된 주문 레코드를 돌려보았습니다. 평탄화 옵션을 켠 상태(기본값)입니다. 입력은 customer.contact.email, shipping.city, pricing.total처럼 세 단계 깊이로 중첩된 객체였고, 엔진은 이런 컬럼들을 만들어냈습니다.
- ["red", "blue"] 같은 단순한 값들의 리스트는 값을 세미콜론과 공백으로 합쳐 하나의 셀이 됩니다: red; blue.
- [{"a": 1}, {"a": 2}] 같은 객체들의 리스트는 컬럼에 펼칠 수 없으므로, 하나의 셀 안에 압축된 JSON 텍스트로 그대로 보관됩니다. 데이터 손실은 없습니다. 표에 펼쳐지지 않을 뿐입니다.
- 빈 배열과 빈 객체는 조용히 사라지는 대신 []와 {}가 되어, "비어 있음"과 "없음"을 구분할 수 있습니다.
orderId,customer.name,customer.contact.email,customer.contact.phone,shipping.address,shipping.city,shipping.state,shipping.zip,pricing.subtotal,pricing.tax,pricing.total,status
ORD-9821,Alex Rivera,alex.r@techcorp.com,+1-555-0192,742 Evergreen Terrace,Springfield,OR,97477,249.99,21.25,271.24,shipped모든 중첩된 값이 제 컬럼을 찾았고, 빠진 것도 없습니다. 리스트와 관련된 평탄화 규칙 두 가지는 알아둘 가치가 있습니다.
변환 과정에서 달라지는 것 (그리고 달라지지 않는 것)
변환은 충실하지만, 눈에 보이지 않는 건 아닙니다. JSON이 CSV가 될 때 정확히 무엇이 달라지는지 정리합니다.
- 타입이 텍스트가 됩니다. 42, true, "2026-10-06"은 모두 문자로 CSV에 들어갑니다. 스프레드시트는 가져올 때 숫자와 날짜를 다시 감지하긴 하지만, CSV 자체에는 타입 정보가 없습니다. 07477 같은 우편번호는 스프레드시트가 "숫자"로 추측하면 앞자리 0이 날아갈 수 있습니다. 중요하다면 가져올 때 해당 컬럼을 텍스트 형식으로 지정하세요.
- null은 빈 셀이 됩니다. 키가 아예 없는 경우도 마찬가지입니다. 100개 객체 중 하나에 이메일 주소가 없으면 해당 행의 이메일 컬럼은 그냥 비게 됩니다.
- 키 순서가 컬럼 순서가 됩니다. JSON 객체는 명세상 순서가 없습니다. 변환기는 처음 본 순서를 사용하므로, 컬럼은 키가 데이터에 처음 등장한 순서대로 배열됩니다.
- 인코딩은 UTF-8 그대로입니다. Excel에서 한글과 특수문자가 깨져 보인다면 ANSI로 읽은 것입니다. 다시 가져오면서 파일 원본을 65001: UTF-8로 지정하세요.
- 구분자는 바꿀 수 있습니다. 기본은 쉼표지만, 사용하는 Excel이 세미콜론을 기대한다면 가져오기와 싸우지 말고 세미콜론 구분자로 내보내세요.
달라지지 않는 것: 값 자체, 레코드 수, 그리고 평탄화를 켠 상태에서는 점 표기법 컬럼으로 재구성된 전체 중첩 구조. 그래도 한 가지 습관은 유지할 가치가 있습니다. 원본 JSON을 보관하세요. CSV는 일방향 단순화이고, 되돌려 변환한다고 데이터 타입이 복원되지는 않습니다.
JSON을 CSV로 무료로 변환할 수 있나요?
네, 이건 이미 해결된 흔해진 작업이라 돈을 낼 필요가 없습니다. 무료 온라인 변환기가 흔한 경우를 몇 초 만에 처리합니다. JSON을 붙여넣거나 .json 파일을 끌어다 놓고 CSV를 다운로드하면 됩니다. 이 사이트의 변환기는 무료에 가입도 필요 없고, 전적으로 브라우저에서 동작하며, 다운로드 전에 평탄화, 구분자, 헤더를 토글할 수 있습니다.
파일을 어디에도 업로드하지 않고 할 수 있나요?
네, 그리고 민감한 데이터라면 반드시 그렇게 해야 합니다. 온라인 변환기에는 두 종류가 있습니다. 서버 사이드 변환기는 파일을 업로드해서 남의 컴퓨터에서 변환한 뒤 다운로드 링크를 줍니다. 클라이언트 사이드 변환기는 변환 전체를 내 브라우저 탭 안의 JavaScript로 실행하므로 데이터가 내 기기를 떠나지 않습니다.
이 사이트의 변환기는 후자입니다. 붙여넣거나 파일을 끌어다 놓으면 CSV가 내 컴퓨터에서 로컬로 생성됩니다. (네트워크 요청이 일어나는 유일한 경우는 URL에서 JSON을 가져오라고 명시적으로 요청할 때뿐입니다.) 경험칙 하나: JSON에 API 키, 고객 이메일, 낯선 사람에게 이메일로 보내기 꺼려지는 것이 들어 있다면, 업로드부터 하고 변환은 나중에 하는 도구는 절대 쓰지 말고 클라이언트 사이드 변환기, 에디터, 로컬 스크립트를 쓰세요.
어떤 종류인지 어떻게 아냐고요? 도구를 열고 데이터를 붙여넣은 뒤 변환하는 동안 브라우저의 네트워크 탭을 보세요. 더 간단히는, 페이지가 로드된 뒤 네트워크 연결을 끊어보는 겁니다. 클라이언트 사이드 변환기는 오프라인에서도 계속 동작합니다.
Excel이나 Google Sheets로 할 수 있나요?
Excel은 네이티브로 할 수 있고, 어차피 스프레드시트가 최종 목적지라면 최고의 선택입니다. 데이터, 데이터 가져오기, 파일에서, JSON에서 순서로 들어가 파일을 고르세요. Power Query가 레코드를 표로 보여줍니다. 중첩된 컬럼은 컬럼 헤더의 확장 아이콘으로 펼치고, 닫기 및 로드 후 CSV로 저장합니다. 중첩 데이터는 점 표기법 대신 눈으로 펼치므로 이 방식을 더 선호하는 사람도 있습니다.
Google Sheets는 JSON을 네이티브로 가져올 수 없습니다. .json 파일용 파일, 가져오기 메뉴가 없습니다. 현실적인 선택지는 무료 도구로 먼저 CSV로 변환한 뒤 파일, 가져오기를 쓰는 것, 또는 JSON을 가져와 파싱하는 작은 Apps Script를 돌리는 것입니다. 대부분은 Sheets 스크립트를 짜는 것보다 먼저 변환하는 게 빠릅니다.
알아둘 만한 Excel 전용 함정 하나: 전부 한 컬럼에 몰려 들어간다면, 사용하는 Excel이 구분자로 세미콜론을 기대하고 있을 확률이 높습니다(유럽 로케일에서 흔함). 가져오기 마법사와 싸우지 말고 세미콜론 구분자로 CSV를 다시 내보내세요.
코드로 변환할 수 있나요?
매일 내보내기, 빌드 단계, 데이터 파이프라인처럼 같은 형태의 JSON을 주기적으로 변환한다면, 매번 도구를 클릭하는 것보다 짧은 Python 스크립트가 낫습니다. 데이터 팀이 손이 가는 코드 조각입니다. 중첩된 객체를 점 표기법 컬럼으로 평탄화하고, Excel이 UTF-8 인코딩을 자동으로 감지하도록 BOM을 씁니다.
import pandas as pd
# Flat or list-of-objects JSON
df = pd.read_json("data.json")
# Nested objects? Flatten them to dot-notation columns first
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")일회성 터미널 작업에는 jq가 Python 없이 변환합니다. 이 명령은 data.json을 읽어 객체당 두 필드를 골라 CSV 행을 stdout에 바로 출력합니다. 이미 파이프로 돌리고 있는 로그나 API 응답에 요긴합니다.
한 줄 터미널 대안
아래 jq 명령은 이 기기에서 직접 테스트한 것입니다. 객체들의 배열을 받아 각 객체의 tags를 "; "로 합치고, 따옴표 처리가 된 올바른 CSV를 뱉어냅니다.
$ echo '[{"name":"Ana","tags":["x","y"]}]' | jq -r '.[] | [.name, (.tags|join("; "))] | @csv'
"Ana","x; y"@csv 필터가 실제 일을 합니다. 따옴표가 필요한 필드에 따옴표를 붙이고, 안의 따옴표는 RFC 4180대로 이스케이프하므로 엣지 케이스를 신경 쓸 필요가 없습니다.
아주 큰 JSON 파일은 어떻게 하나요?
가능은 하지만, 브라우저 탭에서는 안 됩니다. 브라우저 기반 변환기는 몇 메가바이트까지는 여유롭게 처리합니다. 그 이상은 문서 전체가 메모리에 한 번에 올라가므로 탭이 느려지거나 멈춥니다. 큰 파일은 로컬에서 변환하세요.
- pandas를 쓴 Python은 평범한 노트북에서도 수백 메가바이트를 스트리밍으로 처리합니다. 위의 코드 조각이 그대로 동작합니다.
- jq는 JSON을 스트림으로 처리하므로, 단순한 필드 추출에는 파일 전체를 메모리에 올릴 필요가 없습니다.
- 정말 큰 파일(기가바이트급)은 먼저 입력을 나누세요. 한 줄에 JSON 객체 하나씩이면 한 줄씩 처리할 수 있습니다. SQLite나 DuckDB에 넣고 거기서 CSV로 내보내는 방법도 있습니다.
크기와 상관없이, 변환 전에 JSON을 검증하세요. 변환기는 유효하지 않은 JSON을 가차 없이 거부합니다. 2GB 파일에서 구문 오류를 찾는 일은 시행착오보다 스트리밍 검증기로 하는 게 훨씬 쉽습니다.
어떤 방법을 골라야 할까요?
위의 모든 방법은 같은 입력에 같은 CSV를 만듭니다. 차이는 편의, 프라이버시, 규모입니다. 상황에 맞는 행을 고르세요.
- 한 번만, 몇 메가바이트 이하: 무료 온라인 변환기. 압도적으로 가장 빠릅니다.
- 민감한 데이터: 클라이언트 사이드 변환기나 로컬 스크립트. 아무것도 업로드하지 마세요.
- 정기적으로 반복되는 같은 변환: 다시 돌리고 버전 관리할 수 있는 Python 스크립트.
- 거대한 파일: 로컬 도구, Python, jq, DuckDB. 브라우저 탭은 절대 아닙니다.
- 스프레드시트가 최종 목적지: Excel Power Query로 중간 단계를 건너뛰세요.
제목의 질문에 대한 답만 필요했다면: 네, JSON을 CSV로 변환할 수 있습니다. 위에서 내 행을 찾아 몇 분이면 끝납니다.
관련 가이드
- JSON을 CSV로 변환하는 방법: 확실한 3가지 방법 (2026 가이드)
- JSON 포맷하는 3가지 확실한 방법: 보기 좋게 + 검증까지 (2026 가이드)
- CSV를 JSON으로 변환하는 방법: 검증된 3가지 방법 (2026 가이드)
- JSON 파일을 CSV로 변환하는 방법: 업로드, Excel, 명령줄 (2026 가이드)
- JSON을 CSV로 변환하는 최고의 도구는? 6가지 옵션 직접 검증 (2026 가이드)
- 1분 만에 JSON을 CSV로 변환하는 방법: 모든 상황에 맞는 가장 빠른 길 (2026 가이드)
- JSON CSV 변환 온라인 도구란? 좋은 도구 고르는 법 (2026 가이드)
- JSON 파일을 온라인에서 CSV 파일로 변환하려면 어떻게 해야 하나요? (2026년 가이드)
- 중첩된 JSON을 CSV로 변환하는 방법: 평탄화 토글이 실제로 하는 일 (2026 가이드)
- JSON으로 CSV 만드는 방법: 원시 데이터를 제대로 동작하는 파일로 바꾸는 7가지 결정 (2026 가이드)
- VS Code에서 JSON을 CSV로 변환하는 방법: 클릭부터 단축키 한 번까지, 4가지 방법 (2026 가이드)
- how to flatten the JSON data: JSON 데이터를 펼치고, 합치고, 중첩 그대로 두는 방법 (2026 가이드)
- JSON을 CSV로 변환하는 방법이 있나요? 네 — 상황에 맞게 고르는 5가지 방법 (2026 가이드)
- JSON to CSV 온라인 변환 방법: 이 탭에서 30초 만에 끝내는 법 (2026 가이드)
- json to csv converter download: 실제로 다운로드해야 할 것 (2026 가이드)
- Convert Large JSON to CSV Online Free: 대용량 파일, 어디까지 변환할 수 있을까요? (2026 가이드)
- JSON 파일과 CSV 파일이란? 초보자를 위한 두 포맷 완전 가이드 (2026 가이드)
- What does flattening a JSON mean? JSON 평탄화의 의미 해설 (2026 가이드)
- What is JSON to CSV online? 세 단어를 풀이합니다 (2026 가이드)
- what is JSON to CSV converter online? 다섯 단계로 뜯어보는 온라인 변환기의 구조 (2026 가이드)
- JSON을 CSV로 로컬에서 변환하는 방법: 파일을 내 컴퓨터 안에 두는 법 (2026 가이드)
- JSON을 CSV로 로컬에서 변환하는 방법은? 6가지 방법 비교 (2026 가이드)
- CSV가 Excel에서 한 열로 열리는 이유와 해결 방법 (2026 가이드)
- Excel에서 CSV가 깨진 문자로 보이는 이유와 인코딩 해결 방법 (2026 가이드)
- Excel이 CSV 코드의 앞자리 0을 지우는 이유와 이를 지키는 방법 (2026 가이드)
- 엑셀에서 CSV 날짜가 바뀌는 이유와 날짜를 그대로 지키는 방법 (2026 가이드)
- 엑셀에서 CSV를 저장하면 파일이 바뀌는 이유와 원본을 안전하게 지키는 방법 (2026 가이드)
- 엑셀로 열리지 않는 큰 CSV 파일, 원인과 해결 방법 (2026 가이드)
자주 묻는 질문
어떤 JSON 파일이든 CSV로 변환할 수 있나요?
거의 그렇습니다. 행과 열로 표현할 수 있는 JSON은 무엇이든 깔끔하게 변환되고, 중첩 구조는 먼저 점 표기법 컬럼으로 평탄화됩니다. 유일하게 까다로운 입력은 레코드 구조가 전혀 없는 문서입니다. 예를 들어 배열 하나 없이 깊게 중첩된 객체 하나. 변환은 되지만 넓고 성긴 표가 됩니다. 쓸 수는 있습니다. 다만 예쁘지는 않죠.
JSON을 CSV로 변환하면 데이터가 손실되나요?
값은 살아남고, 타입은 사라집니다. 숫자, 불리언, 날짜는 일반 텍스트가 되고, null은 빈 셀이 되며, 중첩은 평탄화된 컬럼으로 재구성됩니다. 좋은 변환기는 아무것도 조용히 버리지 않습니다. 그래도 원본 JSON 파일은 보관하세요. CSV를 되돌려 변환해도 원래 데이터 타입이 복원되지는 않습니다.
설치 없이 JSON을 CSV로 변환할 수 있나요?
네. 무료 온라인 변환기가 브라우저 안에서 설치도 가입도 없이 해줍니다. JSON을 붙여넣고 CSV를 다운로드하면 됩니다. Excel이 이미 있다면 데이터, 데이터 가져오기, JSON에서 메뉴가 별도 소프트웨어 없이 네이티브로 변환해줍니다.
온라인 변환기에 JSON을 붙여넣어도 안전한가요?
변환이 어디서 일어나는지에 달렸습니다. 이 사이트의 변환기 같은 클라이언트 사이드 변환기는 모든 처리를 브라우저 탭 안에서 하므로 데이터가 내 기기를 떠나지 않습니다. 민감한 파일에도 안전합니다. 파일을 먼저 서버에 올리는 도구는 피하세요. 특히 개인정보나 비밀 정보가 들어 있을 때는요.
변환한 CSV가 Excel에서 깨져 보이는 이유는 뭔가요?
범인은 대개 두 가지입니다. 인코딩과 구분자. 한글이나 특수문자가 깨져 보이면 UTF-8이 아니라 ANSI로 읽은 것입니다. 다시 가져오면서 파일 원본을 65001: UTF-8로 지정하세요. 전부 한 컬럼에 몰리면 Excel이 세미콜론을 기대하고 있다는 뜻입니다(유럽 로케일에서 흔함). 세미콜론 구분자로 다시 내보내세요.
나중에 CSV를 다시 JSON으로 되돌릴 수 있나요?
네, CSV에서 JSON으로 가는 건 역방향 여정이고 똑같이 쉽습니다. 검증된 3가지 방법은 가이드 "CSV를 JSON으로 변환하는 방법"을 참고하세요. 한 가지 주의: 원래와 똑같지는 않습니다. 평탄화된 점 표기법 컬럼은 다시 펼치지 않는 한 평탄하게 남고, 모든 값은 문자열로 돌아옵니다.
JSON을 CSV로 변환하는 데 얼마나 걸리나요?
일반적인 파일은 밀리초 단위입니다. 붙여넣고, 다운로드하고, 끝. 시간이 문제가 되는 건 수백 메가바이트급의 아주 큰 파일뿐입니다. 브라우저 탭이 버거워할 수 있으니 로컬 스크립트가 더 빠르고 안전합니다.
JSON을 변환할 준비가 되셨나요?
JSON을 붙여넣고 몇 초 만에 깨끗한 스프레드시트용 CSV를 다운로드하세요. 무료, 프라이빗, 가입 불필요.
JSON→CSV 변환기 열기