Skip to content
Logo Any Help Me

JSON ↔ CSV 변환기: 양방향 변환

구분자

레코드를 행으로, 다시 원래대로

JSON과 CSV 둘 다 표 형태의 데이터를 담지만, 그것을 위해 설계된 것은 한쪽뿐입니다. CSV는 정의상 평평합니다. 머리글 행과 그 아래의 값들이 전부이고, 중첩된 객체나 셀 안의 배열을 표현할 방법이 없습니다. JSON은 중첩을 손쉽게 다루며, 평평한 객체의 배열이라는 특정한 경우에는 CSV에 깔끔하게 대응됩니다.

이 변환기는 양방향으로 동작하고 쉼표·세미콜론·탭 구분자를 지원하며, 만들어진 행 수를 알려 줍니다.

변환하는 방법

방향을 먼저 고르세요. 모드마다 입력 창이 기대하는 형식이 다릅니다.

  1. 방향을 고르세요. JSON에서 CSV로, 또는 CSV에서 JSON으로입니다.
  2. 데이터를 붙여넣으세요. JSON에서 CSV로 갈 때는 객체의 배열이 가장 쓸모 있는 결과를 냅니다.
  3. 구분자를 정하세요. 쉼표가 표준이고, 소수점에 쉼표를 쓰는 로케일에서는 세미콜론이 흔하며, 탭은 두 문제를 모두 피합니다.
  4. 출력과 함께 표시되는 행 수를 확인해 전부 파싱되었는지 간단히 점검하세요.
  5. 결과가 맞아 보이면 복사하세요.
  6. 머리글이 예상과 맞는지 확인하세요. 첫 번째 객체의 키에서 가져옵니다.

까다로운 데이터를 변환기가 다루는 방식

JSON에서 CSV로 갈 때 머리글은 객체들의 키 합집합에서 가져오며, 특정 객체에 없는 값은 빈 셀이 됩니다. 구분자나 따옴표, 줄바꿈을 포함한 값은 큰따옴표로 감싸고 내부 따옴표는 두 번 겹쳐 쓰는데, 이것이 표준 CSV 이스케이프 규칙입니다. 중첩된 객체나 배열은 평평한 표현이 없으므로 열로 펼치는 대신 직렬화됩니다.

반대로 돌아올 때는 값이 변환됩니다. 숫자처럼 보이는 텍스트는 숫자가 되고, `true`와 `false`는 불리언이 되며, 빈 셀은 빈 문자열이 됩니다. 대개는 원하는 결과이지만 가끔은 아닙니다. 앞자리가 0인 우편번호나 긴 숫자 식별자는 숫자로 읽혀 앞의 0이나 정밀도를 잃습니다. 그것이 중요한 경우라면 변환한 뒤 해당 열을 바로잡으세요.

구분자 고르기

어떤 구분자를 쓸지, 그리고 각각 무엇이 잘못되는지입니다.

구분자적합한 경우흔한 문제
쉼표기본값, 가장 폭넓은 도구 지원소수점에 쉼표를 쓰는 로케일에서 깨짐
세미콜론유럽 로케일, 그곳의 엑셀 내보내기대부분의 파서에서 기본값이 아님
쉼표와 세미콜론이 포함된 데이터눈에 보이지 않아 붙여넣기에서 쉽게 유실

스프레드시트가 파일을 열었을 때 모든 행이 한 열에 몰려 있다면 거의 언제나 구분자가 원인입니다. 파일은 한 구분자를 썼는데 프로그램은 다른 것을 기대한 것이죠. 탭으로 바꾸면 이 모호함은 사라지지만, 눈으로 살피기 어려운 형식이 됩니다.

알아 둘 만한 한계

CSV에는 타입 체계가 없고, 모든 도구가 합의하는 공식 명세도 없습니다. 머리글이 있는지, 따옴표를 어떻게 이스케이프하는지, 줄바꿈이 CRLF인지 LF인지, 어떤 인코딩을 쓰는지가 모두 규칙이 아니라 관례입니다. 같은 파일이 두 프로그램에서 다르게 동작하는 이유가 그것입니다. 받는 쪽이 문서화된 가져오기 형식을 제공한다면, CSV가 한 가지를 뜻한다고 가정하는 것보다 그쪽이 안정적입니다.

깊게 중첩된 JSON이야말로 CSV가 진짜로 표현하지 못하는 경우입니다. 평평한 객체의 배열은 깔끔하게 변환되지만, 객체 안에 객체가 있는 것은 먼저 평탄화해야 합니다. 원하는 필드를 고르거나 점으로 이은 경로로 펼쳐 쓰는 식으로요. 모든 처리는 브라우저에서 이루어지므로 붙여넣은 내용은 전송되거나 저장되지 않습니다.

자주 묻는 질문

어떤 JSON 형태가 CSV로 가장 잘 변환되나요?
평평한 객체의 배열이며, 각 객체가 같은 키를 갖는 경우입니다. 머리글 한 줄과 객체당 한 행에 그대로 대응됩니다.
중첩된 객체는 어떻게 되나요?
평평한 표현이 없으므로 열로 펼치는 대신 셀 안에 직렬화됩니다. 열을 나누고 싶다면 먼저 데이터를 평탄화하세요.
어떤 구분자를 써야 하나요?
데이터나 로케일과 충돌하지 않는 한 쉼표입니다. 유럽 로케일에서는 세미콜론이 흔하고, 탭은 두 문제를 피하는 대신 눈에 보이지 않습니다.
우편번호의 앞자리 0이 왜 사라졌나요?
CSV를 JSON으로 변환할 때 숫자처럼 보이는 값이 숫자로 바뀌기 때문입니다. 앞자리가 0인 코드나 긴 식별자는 나중에 바로잡아야 합니다.
값 안의 쉼표는 어떻게 처리되나요?
구분자나 따옴표, 줄바꿈이 든 값은 큰따옴표로 감싸고 내부 따옴표는 두 번 겹쳐 씁니다. 표준 CSV 이스케이프 규칙입니다.
스프레드시트가 왜 모든 행을 한 열에 넣나요?
구분자 불일치입니다. 파일은 한 구분자를 쓰는데 프로그램은 다른 것을 기대합니다. 스프레드시트가 기대하는 구분자로 다시 내보내세요.
제 데이터가 어디론가 전송되나요?
아니요. 변환은 전적으로 브라우저에서 이루어지며 붙여넣은 내용은 전송되거나 저장되지 않습니다.

더 많은 도구 보기: 개발자

모두 보기 →