JSON → CSV 변환기
JSONJSON 객체 배열을 RFC 4180 인용 규칙으로 CSV로 평면화하고 파일로 다운로드합니다.
이 페이지에서
JSON to CSV 변환기란?#
JSON to CSV 변환기는 객체들의 JSON 배열(대부분의 API와 데이터베이스가 행을 반환할 때 내보내는 모양)을 받아 쉼표로 구분된 값인 CSV 텍스트 로 써냅니다. 각 객체는 한 줄이 되고, 각 최상위 키는 열이 되며, 첫 줄에 필드 이름이 옵니다. 결과는 스프레드시트·데이터 도구·데이터베이스가 직접 가져오는 일반 텍스트입니다.
CSV는 사소해 보이지만 올바로 만들려 하면 까다롭습니다. 어디서나 동작하는 실제 형식은 RFC 4180입니다. 쉼표·큰따옴표·줄바꿈을 포함한 필드는 큰따옴표로 감싸야 하고, 필드 안에 이미 있는 큰따옴표는 두 번("") 써야 합니다. 줄은 단일 줄바꿈이 아니라 CRLF로 구분합니다. 이 중 하나라도 틀리면 Smith, John 같은 이름이나 He said "hi" 같은 값이 하위에서 조용히 열을 망가뜨립니다. 스프레드시트가 열을 하나 더로 보거나 필드를 잘라버립니다.
이 변환기는 이 모든 것을 처리하고, JSON은 계층형인데 CSV는 평면이라는 까다로운 사실도 다룹니다. 중첩 객체는 점 표기 열(address.city)로 평탄화되고, 평탄화할 수 없는 배열이나 객체 필드는 셀 안에 JSON 텍스트로 직렬화됩니다. 구분자(쉼표·세미콜론·탭·파이프)도 고를 수 있는데, “CSV”는 로케일마다 다른 것을 뜻하기 때문입니다.
사용 방법#
- 왼쪽 입력 패널에 객체들의 JSON 배열을 붙여넣으세요. 단일 객체나
{"data": [...]}처럼 행을 단일 키 아래 감싼 객체도 받아들여집니다. - 구분자 를 고르세요.
,(기본값),;,Tab,|. 세미콜론은 많은 유럽 로케일에서 Excel이 기대하는 것이고, 탭은 TSV를 줍니다. - 중첩 평면화 (기본 켜짐)에 체크해서 중첩 객체를 점 표기 열로 펼치세요. 중첩 객체를 단일 셀에 JSON 텍스트로 유지하려면 체크를 끄세요.
- CSV는 출력 패널에 실시간으로 나타나며, 필드가 필요로 하면 인용이 적용됩니다. 상태 줄은 행 수를 알려줍니다.
- 다운로드 로
data.csv를 저장하거나, 복사 로 텍스트를 클립보드에 가져가세요. - 예제 는 두 행짜리 작은 데이터셋을 불러오고, 지우기 는 양쪽 패널을 초기화합니다.
주요 기능#
- RFC 4180 인용. 사양이 요구할 때 정확히 필드를 감싸고 내부 따옴표를 두 번 쓰므로, 값 안의 쉼표·따옴표·줄바꿈이 열 구조를 망가뜨리지 않습니다.
- CRLF 줄 끝. 출력은 Windows 스타일 줄바꿈을 써서 플랫폼 간 Excel과 다른 스프레드시트 소프트웨어 호환성을 최대화합니다.
- 구분자 선택. 쉼표·세미콜론·탭·파이프 중 하위 도구가 기대하는 것을 고르면, 인용은 선택한 구분자에 맞게 적응합니다.
- 점 표기 평탄화. 중첩 객체는 이름 붙은 열로 펼쳐져 안의 필드가 홀로 설 수 있고, 배열과 고집스러운 객체는 버려지는 대신 JSON 텍스트 셀이 됩니다.
- 고르지 않은 행에서 안정적인 열. 헤더는 모든 행의 키의 합집합을 처음 보인 순서대로 취하므로, 필드가 더 있거나 빠진 행도 올바로 정렬됩니다.
실전 예시#
예제 를 불러오면 입력은 두 행짜리 배열입니다.
[
{ "name": "Ada Lovelace", "role": "Engineer", "skills": ["math", "logic"] },
{ "name": "Bob", "role": "PM", "skills": ["docs"] }
]
구분자를 ,로 하고 중첩 평면화 를 켜면 열은 name, role, skills입니다. skills 필드는 배열이라 JSON 텍스트로 직렬화됩니다. 이 텍스트는 쉼표와 큰따옴표를 포함하므로 인용되고 내부 따옴표는 두 번 쓰입니다.
name,role,skills
Ada Lovelace,Engineer,"[""math"",""logic""]"
Bob,PM,"[""docs""]"
변환기가 조용히 그리고 올바로 한 두 가지에 주목하세요. Ada Lovelace는 인용되지 않 습니다. 공백만 들었을 뿐(구분자도, 따옴표도, 줄바꿈도 없음)이므로 감싸는 것은 의미가 없기 때문입니다. 반면 Ada의 skills 셀은 인용되고 내부 따옴표가 두 번 쓰였습니다. 쉼표와 " 문자를 모두 포함하여 그렇지 않으면 행을 망가뜨릴 것이기 때문입니다.
구분자 를 ;로 바꾸면 skills 셀 안의 쉼표가 구분자와 더 이상 충돌하지 않지만, 필드는 여전히 내부 큰따옴표 때문에 인용됩니다. 변환기는 구분자가 아니더라도 RFC 4180 트리거 중 하나라도 있으면 인용합니다.
FAQ#
왜 내 데이터의 큰따옴표가 ""로 두 번 쓰이나요?#
인용된 필드 안에 리터럴 큰따옴표를 넣는 RFC 4180 규칙입니다. 두 번 쓰세요. He said "hi" 같은 값은 CSV에서 "He said ""hi"""가 됩니다. 바깥 따옴표는 필드를 감싸고("를 포함하므로), 각 내부 "는 두 번 쓰여 파서가 필드 끝이 아니라 데이터임을 압니다. CSV를 올바로 읽는 도구는 가져올 때 원래 따옴표 하나로 복원합니다.
내 필드에 쉼표가 있습니다. 열이 깨지나요?#
아니요. 구분자·큰따옴표·캐리지 리턴·줄바꿈 중 하나를 포함한 필드는 자동으로 큰따옴표로 감싸집니다. Smith, John 같은 값은 "Smith, John"이 되어 한 열에 머무릅니다. 손으로 이스케이프할 것은 없습니다.
왜 쉼표 대신 세미콜론이나 탭을 선택합니까?#
로케일 때문입니다. 많은 유럽 로케일의 Excel은 ;를 기본 목록 구분자로 쓰므로, 쉼표로 구분된 파일은 다시 가져오기 전까지 모든 것이 한 열에 몰리게 됩니다. 탭으로 구분된(TSV)은 데이터가 쉼표와 세미콜론을 모두 포함할 수 있을 때 가장 안전합니다. 실제 값에 탭은 거의 나타나지 않습니다. 하위 도구가 기대하는 것을 고르세요.
중첩 객체나 배열 필드는 어떻게 되나요?#
중첩 평면화 를 켜면 중첩 객체는 점 표기 열(address.city, address.zip)로 펼쳐져 각 내부 값이 자기 열을 갖습니다. 배열 필드는 무손실로 열로 평탄화할 수 없어 셀 안에 JSON 텍스트로 직렬화됩니다(예: ["math","logic"]). 아무것도 버려지지 않습니다. 각 배열 요소를 자기 행에 두려면 JSON을 먼저 재구성하세요.