Json To Csv LogoJson To Csv

JSON to CSV 온라인 변환 방법: 이 탭에서 30초 만에 끝내는 법 (2026 가이드)

JSON to CSV 온라인 변환 방법: 이 페이지의 변환기에 JSON을 붙여넣고, 오른쪽에 나타난 CSV를 확인한 뒤 Download .csv를 클릭하세요. 방법이 이게 전부예요. 이 가이드의 나머지 부분에서는 클릭 하나하나를 짚어 주고, 변환되는 네 가지 JSON 형태를 보여 주며, 모두가 한 번쯤 마주치는 세 가지 오류의 해결법을 알려 드려요.

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

30초 완성 경로, 클릭 하나하나 짚어 보기

줄임말 형태의 검색어로 찾아오셨으니, 줄임말 형태의 답부터 드릴게요. 단, 클릭은 하나하나 전부 짚어 드려요. 1단계: 이 페이지 상단에 있는 변환기로 스크롤하세요. 나란히 놓인 상자 두 개가 보여요. 왼쪽 상자는 Input JSON이라고 표시되어 있고, 안에 Paste raw JSON data here or drag and drop a .json file이라는 안내 문구가 들어 있어요. 그 안을 클릭하고 Ctrl+V나 Cmd+V로 JSON을 붙여넣으세요.

2단계는 사실 클릭이 아니에요. Auto Convert가 기본값으로 켜져 있기 때문이에요. 붙여넣는 즉시 오른쪽 상자, 즉 Output CSV라고 표시된 상자가 변환 결과로 채워지고, 왼쪽 상자 위의 상태 배지가 Ready에서 Valid (N rows)로 바뀌어요. 여기서 N은 행 개수예요. Auto Convert를 끈 적이 있다면, 설정 표시줄에 있는 Convert to CSV 버튼이 같은 일을 주문형으로 수행해요.

3단계: Output CSV 상자의 오른쪽 위 모서리에 있는 Download .csv를 클릭하세요. 파일이 즉시 다운로드돼요. 파일 이름은 data-export-YYYY-MM-DD.csv이고, 오늘 날짜가 들어가며, 일반 UTF-8 텍스트 형식이에요. Excel, Google Sheets, 어떤 텍스트 편집기에서든 열 수 있어요. 가입도, 업로드도, 대기 화면도 없어요. 변환은 내 컴퓨터 안에서, 이 브라우저 탭 안에서 일어나요.

경로는 이게 전부예요. 그리고 한 번만 변환할 파일이라면 이 경로가 정답이에요. 이 가이드의 나머지 부분은 사람들이 막히는 세 가지 순간을 위해 있어요. 붙여넣을 수 있는 JSON이 무엇인지 모를 때, 출력 결과를 신뢰하지 못할 때, 그리고 빨간색 Invalid JSON 배지가 떴을 때요. 각각에 대해 짧고 구체적인 해결법이 아래에 있어요. 참고로 붙여넣기 전에는 배지가 Ready라고 표시돼요. 이건 아직 변환할 입력이 없다는 뜻이지 오류가 아니에요. JSON을 붙여넣는 순간 배지가 Valid (N rows)로 바뀌는 것이 정상 동작이에요.

붙여넣을 것: 모두 변환되는 네 가지 형태

변환기는 대부분의 사람들이 생각하는 것보다 더 많은 형태를 받아들여요. 이 형태들을 알면 다시 형식을 다듬는 수고를 덜 수 있어요. 가장 흔한 형태는 객체의 배열이에요. 대괄호로 감싼 목록이고, 각 항목이 하나의 행이 돼요. 이걸 붙여넣으면 각 객체가 하나의 행이 되고, 헤더 행은 데이터 전체에서 발견된 모든 키의 합집합으로 만들어져요. 키가 행마다 조금씩 달라도, 어느 행에만 있는 키라도 헤더에 빠져요? 아니에요. 모든 키가 헤더에 모여요. 그래서 열이 빠지는 일이 없어요. 예를 들어 첫 행에는 없고 세 번째 행에만 있는 키가 있다면, 그 키의 컬럼은 해당 행에서 값이 채워지고, 키가 없는 행에서는 비어 있게 돼요. 없는 값을 억지로 채울 필요는 없어요.

두 번째 형태는 대괄호가 전혀 없는 단일 객체예요. 객체 하나를 붙여넣으면 한 행짜리 CSV가 나와요. 키가 헤더 행이 되고, 값이 유일한 데이터 행이 돼요. 세 번째 형태는 래핑된 API 응답이에요. 배열이 {"users": [...]}처럼 어떤 키 아래에 들어 있는 형태예요. 변환기는 최상위 수준의 객체 배열을 찾아서 그걸 변환하므로, 원본 API 응답을 손으로 벗겨 내지 않고 그대로 붙여넣어도 돼요.

네 번째 형태는 JSON Lines, 즉 NDJSON이에요. 한 줄에 하나의 JSON 객체가 있고, 쉼표도 바깥쪽 대괄호도 없어요. 이걸 붙여넣으면 각 줄이 하나의 행이 돼요. 그리고 ["apple", "banana", "cherry"]처럼 일반 값만 들어 있는 배열을 붙여넣으면 index와 value 두 개의 컬럼이 생기고, 1부터 번호가 매겨져요. 아래 다섯 가지 형태는 모두 이 가이드가 공개되기 전에 실제 변환기 엔진으로 실행해 본 것이라서, 출력 결과가 정확해요.

아래 실습 예시는 래핑된 형태예요. 사람들을 가장 많이 헷갈리게 하는 형태이기 때문이에요. 중첩된 주소 객체와 태그 목록을 가진 사용자 두 명이 들어 있어요. 기본 설정에서는 주소가 address.city와 address.zip으로 펼쳐지고, 태그 목록은 세미콜론과 공백으로 연결되어 하나의 셀에 들어가요.

Try it: the wrapped users file, and what the converter returns (verified)
{
  "users": [
    { "id": 1, "name": "Ana", "address": { "city": "Lima", "zip": "15001" }, "tags": ["new", "vip"] },
    { "id": 2, "name": "Ken", "address": { "city": "Osaka", "zip": "530-0001" }, "tags": ["new"] }
  ]
}

# Output CSV, default settings (verified):
# id,name,address.city,address.zip,tags
# 1,Ana,Lima,15001,new; vip
# 2,Ken,Osaka,530-0001,new

다운로드 전 10초 확인법

Download .csv를 클릭하기 전에, 네 가지 확인에 10초를 쓰세요. 흔한 실수를 모두 잡아낼 수 있고, 아직 수정이 클릭 한 번으로 끝나는 시점이에요. 첫째, 상태 배지를 읽으세요. Valid (N rows)라고 표시되어야 하고, N은 붙여넣은 레코드 개수와 같아야 해요. 레코드 50개를 붙여넣었는데 N이 1이라면, 변환기는 50개가 아니라 객체 하나를 본 거예요. 래핑된 응답을 예상과 다른 형태로 붙여넣었을 가능성이 커요. 이럴 때는 입력란을 다시 살펴보세요. 배열이 다른 키 아래에 있거나 한 단계 더 깊이 감싸져 있다면, 변환기가 첫 번째 최상위 객체 배열을 찾지 못할 수 있어요. 원본 응답에서 배열이 어디에 있는지 확인하고, 필요하면 배열 부분만 다시 붙여넣으세요.

둘째, Output CSV 상자의 헤더 행을 읽으세요. 예상한 컬럼 이름들이 적혀 있어야 해요. address.city를 예상했는데 address라는 컬럼이 보인다면 Flatten Nested Objects가 꺼져 있다는 뜻이에요. 이 설정은 아래 설정 섹션에서 다뤄요. 셋째, 중첩된 셀 하나를 읽으세요. new; vip처럼 보이기를 기대한 목록이 큰따옴표가 두 배로 된 JSON 텍스트로 보인다면, 역시 펼치기 설정이 꺼져 있어요.

넷째, CSV 상자 아래에 있는 출력 통계를 흘끗 보세요. 행 수, 컬럼 수, 파일 크기, 변환 시간이 나와요. 행 수와 컬럼 수는 데이터에 대한 내 예상과 맞아야 해요. 일반적인 파일의 변환 시간은 몇 밀리초 수준이라서, 숫자가 크게 나온다면 도구가 느린 게 아니라 파일이 유난히 크다는 뜻이에요. 출력은 기본적으로 Table View(표 보기)로 열려요. 이 확인 작업에 가장 편한 보기예요. Raw CSV(원본 CSV)는 같은 데이터를 일반 텍스트로 보여 주며, 다운로드되는 파일에 들어갈 모습과 정확히 같아요.

네 가지 확인이 모두 통과하면 다운로드하세요. 하나라도 실패하면, 해결법은 설정이나 JSON 자체에 있어요. 둘 다 다음에 다뤄요. 길러야 할 습관은 이거예요. 먼저 확인하고, 그다음 다운로드하기. 10초면 충분하고, 첫 시도에 제대로 열리는 CSV와 두 번 변환해야 하는 CSV의 차이가 바로 여기에 있어요.

설정 1: Flatten Nested Objects(중첩 객체 펼치기)

두 상자 위의 설정 표시줄에는 토글 세 개와 구분자 드롭다운이 있어요. 토글 세 개는 모두 처음부터 켜져 있어요. 첫 번째 토글인 Flatten Nested Objects가 결과를 가장 크게 바꿔요. 켜져 있으면 중첩 객체가 점 표기법 컬럼이 돼요. address가 address.city와 address.zip이 되고, 각 값이 정렬하고 필터링할 수 있는 실제 컬럼에 들어가요.

꺼져 있으면 중첩 값은 있는 그대로 남아요. 주소 객체는 하나의 address 셀에 JSON 텍스트로 들어가고, 태그 목록은 하나의 tags 셀에 JSON 배열로 들어가요. 그 출력에서 보이는 두 배가 된 큰따옴표는 손상이 아니에요. CSV 이스케이프가 제 일을 하고 있는 거예요. 따옴표를 포함한 셀은 따옴표를 두 배로 만들고 전체 셀을 따옴표로 감싸야 하니까요. 데이터는 온전해요. 다만 필터링할 수 있는 표는 아니에요. 그래서 펼치기는 거의 모든 변환에서 켜진 상태로 두는 거예요.

같은 파일을 펼치기를 끄고 변환한 결과가 아래에 있으니, 차이를 눈으로 직접 확인해 보세요. CSV에 {"city": ...} 같은 텍스트가 가득하다면, 원인은 이 토글 꺼짐이고, 다시 켜는 것이 해결법의 전부예요. JSON을 CSV로 펼치는 방법에 대한 가이드에서는 이 토글을 셀 단위로 문서화했어요. 꺼 두는 것이 정답인 예외적인 경우까지 포함해서요.

Same file, Flatten Nested Objects switched off (verified)
# Output CSV, flattening off (verified):
# id,name,address,tags
# 1,Ana,"{""city"":""Lima"",""zip"":""15001""}","[""new"",""vip""]"
# 2,Ken,"{""city"":""Osaka"",""zip"":""530-0001""}","[""new""]"

설정 2: Delimiter(구분자)

Delimiter 드롭다운은 컬럼 사이의 문자를 정해요. Comma(,), Semicolon(;), Tab, Pipe(|) 중에서 고를 수 있어요. Comma가 기본값이고, 스프레드시트가 다른 것을 기대하지 않는 한 정답이에요. 이유가 있을 때만 바꾸세요. 구분자는 다음 프로그램에서 CSV가 깨져 보이게 만들 가능성이 가장 큰 설정이니까요.

대표적인 증상은 Excel에서 파일이 하나의 긴 컬럼으로 열리는 거예요. 모든 행은 있는데, 모든 값이 A열에 몰려 있어요. 파일의 구분자와 Excel이 기대하는 구분자가 맞지 않는다는 뜻이에요. 해결법은 Delimiter를 Comma로 설정해서 다시 다운로드하거나, Excel의 데이터, 텍스트/CSV에서 가져오기를 통해 파일을 여는 거예요. 거기서는 Excel이 추측하게 두는 대신 구분자를 직접 고를 수 있어요. 이 가져오기 방식은 구분자를 적용했을 때 각 컬럼이 어떻게 나뉘는지 미리 보여 주기 때문에, 구분자 문제를 확실히 잡아낼 수 있어요.

알아 둘 만한 미묘한 점이 하나 더 있어요. Semicolon으로 바꾸면, 그 자체로 세미콜론을 포함한 셀은 자동으로 따옴표로 감싸져서 파일이 계속 파싱 가능한 상태로 유지돼요. 아래 세미콜론 버전에서 태그 셀 new; vip는 "new; vip"이 돼요. 이 따옴표는 올바른 CSV이고, 모든 스프레드시트는 이를 단일 값 new; vip로 다시 읽어요. 따옴표를 손으로 지우지 마세요. 그 따옴표는 구조를 지탱하는 역할을 해요.

Same file, Delimiter set to Semicolon (verified)
# Output CSV, semicolon delimiter (verified):
# id;name;address.city;address.zip;tags
# 1;Ana;Lima;15001;"new; vip"
# 2;Ken;Osaka;530-0001;new

설정 3: Include Headers(헤더 포함)

세 번째 토글인 Include Headers는 CSV의 첫 행이 컬럼 이름을 적을지 정해요. 기본값인 켜진 상태로 두면 첫 행은 id,name,address.city,address.zip,tags가 돼요. 끄면 같은 파일이 데이터 행 두 개만 반환해요. 헤더 행은 전혀 없어요. 1,Ana,Lima,15001,new; vip 다음에 2,Ken,Osaka,530-0001,new이 오는 식이에요.

헤더 끄기는 틈새 설정이고, 존재 이유가 딱 하나예요. 이미 헤더 행이 있는 기존 CSV에 이어붙일 때예요. 이미 컬럼 이름을 적은 파일에 두 번째 배치를 붙여넣는다면, 중간에 또 헤더 행이 들어가면 파일이 망가지니까, 새 배치는 헤더 없이 변환해서 빈 행들만 이어붙여요. 그 외의 모든 상황에서는 헤더를 켜 두세요. 헤더 행이 없는 CSV는 컬럼 이름이 없는 표이고, 다음에 여는 사람은 각 컬럼이 무슨 의미인지 추측해야 해요. 이어붙이기가 끝난 뒤에는 합쳐진 파일을 다시 한 번 열어 헤더 행이 하나만 있는지, 행이 이어붙인 순서대로 쌓였는지 확인하는 것이 좋아요. 헤더가 중간에 끼어 있으면 그 행은 데이터로 읽혀서 표가 어긋나요.

설정 표시줄의 네 번째 컨트롤은 토글이 아니라 Convert to CSV 버튼이고, Auto Convert가 꺼져 있을 때만 의미가 있어요. Auto Convert가 켜져 있으면 — 기본값이에요 — 입력하는 대로 출력이 업데이트돼요. 꺼져 있으면 버튼을 누르기 전까지는 아무것도 변환되지 않아요. JSON을 붙여넣었는데 오른쪽 상자가 비어 있다면, Auto Convert를 먼저 확인하세요. 오른쪽 상자가 비는 가장 흔한 이유이고, 해결법은 클릭 한 번이에요.

배지가 Invalid JSON이라고 뜰 때

붙여넣은 JSON이 유효한 JSON이 아니면, 상태 배지가 빨간색으로 바뀌고 Invalid JSON이라고 표시돼요. 입력란 아래에는 빨간색 오류 줄이 나타나고, 파서의 정확한 메시지가 담겨 있어요. 예를 들어 {bad json을 붙여넣으면 Expected property name or '}' in JSON at position 1 (line 1 column 2)라는 메시지가 나와요. 아무것도 붙여넣지 않으면 Input is empty. Please paste or upload JSON data.라는 메시지가 나와요. 메시지가 문제 위치를 알려 주니, 다시 입력하기 전에 메시지를 먼저 읽으세요.

세 가지 실수가 거의 모든 Invalid JSON 배지의 원인이에요. 첫째는 후행 쉼표예요. 객체나 배열의 마지막 항목 뒤에 붙은 쉼표, 예를 들어 {"id": 1,} 같은 경우예요. JSON은 이를 금지해요. JavaScript에서는 허용되지만요. 쉼표를 지우세요. 둘째는 키나 문자열을 감싼 작은따옴표예요. JSON은 큰따옴표를 요구해요. 그래서 'id': 1}은 유효하지 않고 {"id": 1}은 유효해요. 셋째는 닫는 대괄호 누락이에요. {로 연 객체를 닫지 않았거나, [로 연 배열을 닫지 않은 경우예요. 여는 기호와 닫는 기호를 세어 보면, 빠진 곳이 보통 눈에 들어와요.

네 번째 원인은 눈에 보이지 않아요. 스마트 따옴표예요. 웹 페이지, 문서, 채팅 메시지에서 JSON을 복사해 왔다면, 곧은 큰따옴표가 둥근 따옴표로 바뀌었을 수 있어요. JSON은 둥근 따옴표를 받아들이지 않아요. 해결법은 입력란에서 따옴표를 직접 다시 입력하거나, 일반 텍스트 편집기를 거쳐서 붙여넣는 거예요. 특히 문서 편집기나 메신저 앱은 입력하는 대로 곧은 따옴표를 둥근 따옴표로 자동 변환하는 경우가 많아요. 그래서 복사해 온 JSON은 붙여넣기 전에 따옴표 모양부터 의심해 보는 것이 빨라요. JSON이 유효해지면 배지가 Valid (N rows)로 바뀌고 CSV가 나타나며, 다른 단계는 필요 없어요.

탈출구가 하나 더 있어요. 입력 도구 모음에는 Format 버튼이 있어서, 유효한 JSON을 들여쓴 형태로 다듬어 줘요. 큰 파일도 훨씬 읽기 쉽고 디버깅하기 쉬워져요. 유효한 JSON에서만 동작하니까, 배지가 Invalid JSON이라고 뜬다면 오류를 먼저 고치고 나서 서식을 다듬으세요. 그리고 파일이 다른 곳에서 온 거라면 Upload File 버튼이나 드래그 앤 드롭을 써 보세요. .json이나 .txt 파일을 입력란에 바로 떨어뜨리면 붙여넣은 텍스트와 똑같이 변환돼요.

이 페이지를 쓰지 않고 변환하고 싶다면

이 가이드는 의도적으로 하나의 경로, 즉 이 페이지의 변환기에 대해서만 다뤄요. 하지만 유일한 경로는 아니고, 두 가지 상황에서는 다른 경로가 맞아요. 변환이 반복되어야 한다면 — 매일 아침 같은 내보내기라든가, 배포하는 소프트웨어 안에서의 변환이라든가 — 스크립트가 브라우저 탭보다 나아요. 세 가지 확실한 방법과 다섯 가지 변환 방법에 대한 가이드에서는 Python, jq, Power Query, 라이브러리 호출을 같은 파일로 테스트해서 다뤄요.

이미 VS Code에서 살고 있고, JSON이 편집 중인 파일이라면, 에디터 안에서 변환하는 것이 맥락을 유지하는 방법이에요. VS Code 가이드에서는 확장 프로그램, 터미널, 단축키 한 번으로 끝내는 경로를 안내해요. 그 외의 모든 경우 — 파일 하나, 한 번, 지금 당장 — 이 가이드 상단의 경로가 가장 빠른 방법이고, 이 페이지가 만들어진 이유예요.

그리고 이 페이지를 예전에 써 본 적이 있고, 세부 사항 하나만 확인하러 다시 왔다면, 체크리스트는 이거예요. 붙여넣고, 배지가 Valid (N rows)라고 뜨는지 확인하고, 헤더 행을 확인하고, 다운로드하기. 페이지의 나머지 것들은 오늘 필요한 게 아니라, 언젠가 필요해지는 날을 위해 있는 거예요.

관련 가이드

자주 묻는 질문

JSON을 온라인에서 무료로 CSV로 변환하려면 어떻게 하나요?

이 페이지를 열고, JSON을 Input JSON 입력란에 붙여넣은 뒤 Download .csv를 클릭하세요. 변환기는 가입 없이 무료이고, 일반적인 파일에는 파일 제한이 없으며, 출력에 워터마크도 없어요. 변환은 전적으로 브라우저 안에서 일어나므로 아무것도 업로드되지 않고 아무것도 청구되지 않아요.

아무것도 설치하지 않고 JSON을 온라인에서 CSV로 변환하려면 어떻게 하나요?

이 페이지의 변환기를 쓰세요. 프로그램이 아니라 웹사이트라서 다운로드하거나 설치할 것이 없어요. JSON을 붙여넣고, 배지가 Valid (N rows)라고 뜨는지 확인한 뒤 CSV를 다운로드하세요. 데스크톱이나 모바일의 모든 최신 브라우저에서 동작해요. 내 기기에서 나가는 것은 아무것도 없어요. 변환이 로컬에서 일어나니까요.

붙여넣은 텍스트가 아니라 JSON 파일을 온라인에서 CSV로 변환할 수 있나요?

네. 입력 도구 모음에서 Upload File을 클릭하고 .json이나 .txt 파일을 고르거나, 파일을 Input JSON 입력란에 바로 드래그하세요. 공개 URL에 있는 JSON이라면 Fetch URL을 클릭하고 주소를 입력하세요. 페이지가 해당 주소에서 JSON을 불러와 입력란에 넣고, 그 이후의 변환은 붙여넣은 텍스트와 똑같이 진행돼요.

다운로드한 CSV가 Excel에서 한 컬럼으로 열리는 이유는 무엇인가요?

파일의 구분자와 Excel이 기대하는 구분자가 맞지 않아요. Delimiter를 기본값인 Comma로 설정해서 다시 다운로드하거나, Excel의 데이터, 텍스트/CSV에서 가져오기를 통해 파일을 열고 구분자를 직접 고르세요. Excel이 추측하게 두지 마세요. Semicolon을 의도적으로 켜고 변환했다면, Excel에 세미콜론을 기대하라고 알려 줘야 해요. 그렇지 않으면 행 전체가 A열에 보여요.

CSV에 {"city": ...} 같은 텍스트가 가득한 이유는 무엇인가요?

Flatten Nested Objects가 꺼져 있어요. 꺼져 있으면 중첩 객체와 목록이 단일 셀 안에 JSON 텍스트로 남아요. 데이터는 온전하지만 정렬 가능한 표는 아니에요. 토글을 다시 켜면 중첩 값이 address.city 같은 실제 컬럼이 되고, 목록은 하나의 셀에 합쳐져요. 펼치기 끄기 출력에 있는 두 배가 된 큰따옴표는 올바른 CSV 이스케이프이지 손상이 아니에요.

JSON을 온라인에서 CSV로 변환하는 것이 안전한가요?

이 변환기라면 네. 전적으로 브라우저 안에서 동작하므로 JSON이 내 기기를 떠나지 않고 서버로 전송되지도 않아요. 계정도, 업로드도, 어딘가에 보관되는 복사본도 없어요. 모든 온라인 변환기가 그런 것은 아니니, 어떤 도구든 이 질문을 던져 볼 가치가 있어요. 파일을 서버에 업로드한다면, 그 서버의 운영자는 내 데이터를 볼 수 있어요.

JSON 파일이 브라우저 탭에 비해 너무 크면 어떻게 하나요?

브라우저 탭은 일반적인 파일을 편안하게 처리하지만, 수십 메가바이트 이상의 파일이라면 스트리밍하는 도구로 바꾸세요. jq에 --stream 플래그를 쓰면 파일 전체를 불러오는 대신 레코드 단위로 처리해요. 청크 단위로 읽고 쓰는 Python 스크립트도 같은 일을 해요. 큰 파일을 더 작은 파일들로 나누어 각 부분을 따로 변환하는 방법도 있고, 그러면 브라우저 경로도 계속 쓸 수 있어요. 또 하나의 신호는 출력 통계의 변환 시간이에요. 파일이 커질수록 변환 시간이 늘어나니, 평소보다 변환 시간이 유난히 길다면 파일 크기를 먼저 의심하세요.

여러분의 JSON은 CSV까지 30초 거리예요

이 페이지의 변환기에 붙여넣어 보세요. 중첩 객체는 점 표기법 컬럼으로 펼쳐지고, 목록은 깔끔한 셀에 합쳐지며, 다운로드되는 파일은 일반 UTF-8이에요. 무료, 가입 없음, 전적으로 브라우저 안에서 동작해요.

JSON to CSV 변환기 열기
모든 가이드