mygems

CSV를 JSON으로 변환하기

행은 객체로, 머리글은 키로.

  • 배열, JSON Lines, 배열의 배열
  • 숫자와 불리언 인식
  • ID는 문자열 유지
  • 업로드 없음

1.파일 열기

CSV 또는 TSV 파일을 여기로 끌어다 놓거나 파일을 선택하세요.

만든 이유

CSV에서 JSON으로의 변환은 쉬운 방향처럼 보이고, 흔한 변환기는 유형을 잘못 처리해서 쉽게 만듭니다. 전부 문자열이 되거나, 숫자처럼 보이는 것은 전부 숫자가 됩니다. 앞에 0이 붙은 우편번호도, JavaScript가 정확히 표현하지 못하는 18자리 ID도 마찬가지입니다. 이 도구는 열의 모든 값을 보고 유형을 정하고, 숫자처럼 보일 뿐인 열은 건드리지 않습니다.

기능

  • 머리글 행을 키로 쓰는 객체 배열, 한 줄에 객체 하나인 JSON Lines, 머리글이 맨 앞인 배열의 배열 중에서 선택해 기록합니다.
  • 전부 숫자이거나 true/false인 열을 인식해 따옴표 없이 기록합니다.
  • 앞에 0이 붙었거나 15자리를 넘는 열은 JSON 숫자로 바꾸면 값이 달라지므로 문자열로 유지합니다.
  • 빈 셀은 빈 문자열이 아니라 null로 바꿉니다. 원한다면 모든 값을 문자열로 유지할 수도 있습니다.
  • 읽기 좋게 들여쓰거나, 가장 작은 파일로 기록할 수 있습니다.

어떤 형태를 고를까

대부분의 API와 JavaScript 코드는 객체 배열을 기대합니다. JSON Lines는 큰 파일이나 BigQuery, Elasticsearch, jq처럼 레코드를 하나씩 스트리밍하는 데이터 도구에 알맞습니다. 배열의 배열은 가장 간결하고 열 순서가 분명하게 유지됩니다.

자주 묻는 질문

ID 열이 왜 그대로 문자열인가요?
숫자로 바꾸면 값이 달라지기 때문입니다. 앞의 0은 어떤 JSON 파서에서도 사라지고, 15~16자리를 넘는 정수는 JavaScript에서 정밀도를 잃습니다. 열의 모든 값이 이런 문제가 없는 일반 숫자라면 숫자로 기록됩니다.
빈 셀은 어떻게 되나요?
유형 인식이 켜져 있으면 null이 됩니다. CSV에는 빈 문자열과 값이 없는 상태를 구분할 방법이 없기 때문입니다. 인식을 끄면 빈 셀을 포함한 모든 값이 문자열이 됩니다.
중첩된 JSON도 만들 수 있나요?
CSV는 평평한 구조이므로 만들어지는 JSON도 레코드당 키가 한 단계뿐인 평평한 구조입니다. 반대로 중첩된 JSON을 CSV로 바꾸는 일은 JSON을 CSV로 변환하는 도구가 합니다.