JSON ↔ CSV 변환기
JSON을 CSV로, CSV를 다시 JSON으로 브라우저에서 바로 변환하세요. 객체 배열을 붙여넣으면 스프레드시트에 곧바로 쓸 수 있는 표가 만들어지고, CSV를 붙여넣으면 구조화된 JSON을 얻을 수 있습니다. 구분자와 헤더 행까지 원하는 대로 설정할 수 있습니다.
구분자
위에 데이터를 입력하면 변환된 결과가 여기에 표시됩니다.
JSON ↔ CSV 변환기 사용 방법
- 1
변환 방향 선택
토글을 사용해 ‘JSON을 CSV로’ 또는 ‘CSV를 JSON으로’를 선택하세요. 바꾸기 버튼을 누르면 결과가 입력란으로 옮겨져 반대 방향으로 다시 변환할 수 있습니다.
- 2
데이터 붙여넣기
객체로 이루어진 JSON 배열이나 CSV 텍스트를 입력란에 붙여넣으세요. 입력하는 즉시 변환이 자동으로 실행됩니다.
- 3
옵션 설정
데이터에 맞는 구분자를 고르고, CSV를 읽을 때는 첫 행을 헤더로 쓸지, 숫자와 불리언을 파싱할지 선택하세요.
- 4
결과 복사
변환된 결과를 확인하고 클립보드에 복사하면 스프레드시트나 데이터베이스, 코드에 바로 붙여넣을 수 있습니다.
JSON 배열을 스프레드시트에 바로 쓸 수 있는 CSV로 바꾸기
핵심 대응: 객체는 행이 되고, 키는 열이 됩니다
CSV는 행과 열로 된 평평한 2차원 격자인 반면, JSON은 트리입니다. 따라서 의미가 통하는 변환은 특정한 한 가지입니다. 바로 객체들의 최상위 배열이며, 각 객체가 하나의 레코드입니다. 모든 객체는 하나의 데이터 행이 되고, 모든 객체에 걸친 키들의 합집합이 헤더 행이 됩니다. name 과 role 필드를 가진 세 개의 인물 레코드 배열을 붙여넣으면, name 과 role 로 된 헤더 줄에 이어 세 개의 행을 얻습니다.
첫 번째 객체뿐 아니라 모든 객체에 걸쳐 키를 모으는 것이 들쭉날쭉한 데이터를 정렬된 채로 유지하는 비결입니다. 첫 레코드에 name 과 email 이 있고 두 번째 레코드가 phone 필드를 더한다면, 변환기는 여전히 phone 열을 내보내고 첫 행의 phone 칸은 그냥 비워 둡니다. 순서는 처음 등장한 곳을 기준으로 정해지므로, 열은 예측 가능하고 안정적인 순서로 읽힙니다.
객체 배열이 올바른 입력 형태인 이유
단일 숫자나 그냥 문자열로 된 배열에는 자연스러운 표 형태가 없으므로, 그 모호함을 없애기 위해 객체 배열 관례가 존재합니다. 각 요소는 행이 되고, 각 필드 이름은 열이 됩니다. 외톨이 객체는 그저 한 행짜리 경우입니다. 이 도구는 단일 객체를 그 키들을 헤더로 하는 한 행짜리 표로 감쌉니다. 그러나 이 관례는 목록에서 진가를 발휘하는데, 이는 정확히 대부분의 REST 엔드포인트가 목록 리소스에 대해 반환하는 형태입니다. users 엔드포인트, orders 엔드포인트, 검색 결과 엔드포인트처럼 말이죠. API 응답을 스프레드시트로 내보내는 것이 사람들이 이 변환을 꺼내 드는 가장 흔한 이유인 까닭이 바로 이것입니다.
실제 데이터가 한 단계 깊이 감싸여 있다면, 예컨대 여러분이 관심 있는 배열을 results 필드가 담고 있는 객체라면, 먼저 그 안쪽 배열을 끄집어내 따로 붙여넣으세요. 변환기에 배열을 직접 먹이는 것이 혼란스러운 한 행이 아니라 깔끔한 표를 만들어 냅니다.
중첩된 객체와 배열은 어떻게 처리되나요
CSV에는 깊이라는 개념이 없으므로, 그 자체가 객체이거나 배열인 값은 평탄화 방식을 고안하지 않고서는 더 많은 열로 펼쳐질 수 없습니다. 이 도구는 예측 가능하고 가역적인 길을 택합니다. 중첩된 값은 하나의 칸 안에 압축된 JSON 텍스트로 직렬화됩니다. street 와 city 를 담은 address 필드는, 그 작은 객체를 JSON 문자열로 담은 칸 하나가 되며, 내부의 쉼표가 행을 깨뜨리지 않도록 따옴표로 감싸집니다.
이는 데이터를 온전하고 왕복 가능하게 유지하지만, 스프레드시트에서 읽기에 유쾌하지는 않습니다. 레코드가 진정으로 계층적일 때, 즉 깊이 중첩된 설정, 트리 구조, 배열의 배열 같은 것이라면, CSV는 잘못된 대상이며 JSON이나 YAML 표현이 훨씬 더 잘 들어맞습니다. CSV는 평평하고 레코드 같은 데이터에서 빛납니다.
따옴표 처리와 이스케이프, 파일을 소리 없이 망가뜨리는 부분
어설픈 문자열 이어 붙이기가 깨진 CSV를 만들어 내는 이유는, 구분자가 데이터 안에 나타날 수 있기 때문입니다. "Portland, Oregon"이라는 city 값은 쉼표를 담고 있어, 그대로 적으면 두 칸으로 쪼개져 그 뒤의 모든 열을 밀어 버립니다. 변환기는 흔히 쓰이는 RFC 4180 관례를 따릅니다. 구분자, 큰따옴표, 또는 줄바꿈을 담은 모든 필드는 큰따옴표로 감싸지고, 값 안에 이미 있던 큰따옴표는 두 개로 겹쳐집니다.
그래서 she said "hi"라는 단어를 담은 값은 둘레에 따옴표를 두르고 안쪽 따옴표를 겹친 채 내보내지며, 줄바꿈이 박힌 값은 그 줄바꿈이 새 행을 시작하는 대신 한 칸 안에 머물도록 감싸집니다. 이것이 바로 스프레드시트가 가져오기 할 때 기대하는 인코딩이며, 그래서 올바르게 따옴표 처리된 파일은 깔끔하게 열리는 반면 손으로 만든 파일은 데이터를 격자 곳곳에 흩뿌립니다.
구분자 고르기
쉼표는 기본값이자 CSV의 C이지만, 데이터에 쉼표가 가득하거나 스프레드시트 로캘이 쉼표를 소수점 구분자로 쓸 때는 잘 맞지 않습니다. 그런 이유로 유럽의 상당 부분은 세미콜론을 기본으로 쓰고, 분석가들은 흔히 탭 문자를 선호하는데, 탭은 실제 필드 값 안에 거의 나타나지 않아 따옴표 처리 대부분을 비껴가기 때문입니다.
구분자를 파일이 갈 곳에 맞추세요. 동료의 스프레드시트가 모든 행을 A열에 욱여넣고 있다면, 흔한 원인은 구분자 불일치입니다. 그들의 기기에서 열이 제대로 나뉠 때까지 쉼표, 세미콜론, 탭을 바꿔 보세요.
다시 JSON으로 왕복하기
변환은 양방향으로 실행됩니다. CSV-to-JSON으로 바꾸면 헤더 행이 키의 이름을 짓고 그 뒤의 각 행이 객체가 되는데, 이는 비개발자가 스프레드시트를 건네고 여러분이 API나 가져오기 스크립트를 위한 구조화된 데이터가 필요할 때 편리합니다. 한 가지 주의점이 이 왕복을 규정합니다. CSV 칸은 타입이 없는 텍스트이므로, 타입 있는 파싱을 켜지 않는 한 CSV에서 다시 읽은 42 는 숫자가 아니라 문자열 42 입니다.
숫자와 불리언 파싱 옵션을 켜면 평범한 숫자 텍스트와 true/false 텍스트가 돌아오는 길에 진짜 JSON 값으로 변환됩니다. 그렇더라도 이 왕복은 본질적으로 손실이 있는 것으로 다루세요. 따옴표 처리는 정규화하고, 타입 정보는 추론으로 재구성되며, 칸 안에 든 중첩 JSON은 무엇이든 손으로 다시 파싱해야 합니다. 구조화된 데이터의 충실한 사본을 위해서는 처음부터 끝까지 JSON으로 유지하세요.
이것이 실제 작업 흐름에서 차지하는 자리
일상적인 쓰임은 엔지니어링과 나머지 사업 부문을 잇는 것입니다. API 목록을 CSV로 내보내 스프레드시트에서 열리게 하거나, BI 대시보드에 넣거나, 대량 가져오기 템플릿에 공급하는 것이죠. 분석가는 피벗하고 차트로 만들 수 있는 격자를 얻고, 여러분은 일회성 내보내기 스크립트를 쓰는 수고를 덜게 됩니다. 변환 전체가 여러분의 브라우저에서 일어나므로, 주문 이력, 사용자 목록, 내부 지표 같은 운영 데이터를 어떤 것도 제3자 서버로 보내지 않고 다룰 수 있습니다.
깔끔한 내보내기를 위한 실용적인 팁. 변환하기 전에 레코드를 정규화하세요. 모든 객체가 같은 필드 이름을 쓰는지 확인하고, 감싸는 객체에서 배열을 끄집어내고, 중첩된 필드를 코드에서 평탄화할지 아니면 칸 안의 JSON으로 둘지 미리 정하세요. JSON을 다듬는 데 몇 분을 들이면 가져오기 후에 손질이 필요 없는 CSV를 얻습니다.
자주 묻는 질문
JSON을 CSV로 어떻게 변환하나요?
이 변환기는 어떤 CSV 형식을 사용하나요?
CSV를 다시 JSON으로 변환할 수도 있나요?
중첩된 객체는 어떻게 처리되나요?
내 데이터가 서버로 전송되나요?
관련 도구
이런 편리한 도구도 함께 사용해 보세요