fixmint
KO

CSV를 JSON으로 바꾸고 데이터 깨지지 않게 되돌리기

지은이: · · 2026년 11월 8일 업데이트 · 5분 읽기

CSV는 한 줄에 한 레코드씩, 필드를 구분자(보통 쉼표)로 나눈 평범한 텍스트 표예요. 필드 안에 구분자, 큰따옴표, 줄바꿈이 들어가면 깨지기 쉬운데, 읽는 쪽이 구조와 내용을 구분해야 하기 때문이에요. 따옴표 규칙을 지키고, 구분자와 헤더 행을 확인하고, 앞자리 0이 있는 숫자는 문자로 남겨 두세요. 이 글의 나머지 부분에서는 변환을 거쳐도 무엇이 유지되고 무엇이 유지되지 않는지 설명해요.

CSV를 JSON으로CSV를 JSON으로, 또는 반대로 바꾸고 싶어요무료로 사용하기

CSV 파일은 실제로 무엇인가요

CSV에는 하나로 정해진 표준이 없지만, RFC 4180이 널리 쓰이는 형식을 정리해 두었고 대부분의 프로그램이 이를 따라요. 핵심 규칙은 다음과 같아요.

  • 각 레코드는 자기 줄에 있어요. RFC에 따르면 줄은 캐리지 리턴과 라인 피드(CRLF)로 끝나요.
  • 필드는 쉼표로 구분해요.
  • 쉼표, 큰따옴표, 줄바꿈이 들어간 필드는 큰따옴표로 감싸요.
  • 따옴표로 감싼 필드 안의 큰따옴표는 큰따옴표 두 개로 적어요.

따라서 1001,"Smith, Ann",02134 행의 필드는 세 개예요. 따옴표 안의 쉼표는 내용이기 때문이에요. 쉼표마다 자르는 단순한 분리기는 네 개로 나눠요. fixmint의 읽기 기능은 이 규칙을 그대로 적용해요. 따옴표로 감싼 필드에는 구분자, 줄바꿈, 겹따옴표가 들어갈 수 있고, 닫히지 않은 따옴표는 그 따옴표가 시작된 줄 번호와 함께 알려 줘요.

구분자가 바뀌는 이유

RFC의 기본 구분자는 쉼표예요. 그런데 소수점으로 쉼표를 쓰는 지역에서는 1,5가 1.5를 뜻하기 때문에, 스프레드시트는 CSV를 저장할 때 세미콜론을 쓰는 경우가 많아요. 탭으로 구분한 파일(TSV)은 대부분의 데이터에서 텍스트 안에 탭이 거의 없으므로 이런 충돌을 피할 수 있어요.

구분자 메뉴에는 자동, 쉼표, 세미콜론, 탭, 파이프가 있어요. 자동은 처음 10줄을 읽고, 따옴표 밖에서 각 후보 문자가 나오는 횟수를 세어 줄마다 횟수가 가장 일정한 구분자를 골라요. 자동이 잘못 추측하면 직접 구분자를 고르세요.

fixmint에서 변환하기

예시는 CSV를 JSON으로 도구의 기본 옵션으로 진행해요.

실습 예시

첫 행을 헤더로 체크한 상태에서 다음 CSV를 붙여 넣어요.

id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"

숫자 변환을 끄고 JSON 들여쓰기를 공백 2칸으로 설정하면 도구는 다음을 반환해요.

[
  {
    "id": "1001",
    "name": "Smith, Ann",
    "zip": "02134",
    "note": "She said \"hi\""
  },
  {
    "id": "1002",
    "name": "Bo",
    "zip": "10001",
    "note": "line one\nline two"
  }
]

숫자 변환을 켜면 id와 zip 10001은 숫자가 되고, 02134는 문자로 남아요.

단계

  1. CSV를 붙여 넣거나 .csv, .tsv, .txt, .json 파일을 끌어다 놓아요.
  2. 첫 행을 헤더로 쓰기, 구분자, 숫자 변환을 확인해요. JSON 들여쓰기는 공백 2칸, 탭, 압축 중에서 골라요.
  3. 결과를 복사하거나 .json 파일로 내려받아요.

숫자는 문자로 유지하기

JSON 숫자는 앞자리에 0을 붙일 수 없어서 02134는 올바른 JSON 숫자가 아니에요. 우편번호, 전화번호, 상품 코드는 0이 사라지지 않도록 문자로 남겨야 해요. 숫자 변환을 켜면 도구는 10001은 숫자로 바꾸고, 02134는 문자열로 유지해요. 이 옵션은 기본적으로 꺼져 있어요. 소수점이 마침표인 값만 변환하므로, 세미콜론으로 구분한 파일의 1,5는 입력한 그대로 남아요.

긴 식별자도 주의해야 해요. 대부분의 브라우저 JSON을 처리하는 JavaScript는 숫자를 64비트 부동소수점으로 저장해요. 정수는 2의 53제곱에서 1을 뺀 9,007,199,254,740,991까지만 정확히 표현돼요. 12345678901234567890이라는 숫자는 JavaScript 프로그램이 읽으면 12345678901234567000이 돼요. 도구는 숫자를 입력한 그대로 적지만, JavaScript로 JSON을 파싱하는 프로그램은 값을 반올림해 버려요. 식별자는 문자열로 보관하세요. JSON 포맷터도 이런 숫자를 입력한 그대로 유지하며, 몇 개를 유지했는지도 알려 줘요.

중첩된 JSON과 CSV로 되돌리기

CSV는 평평한 구조이고 JSON은 중첩할 수 있어요. JSON을 CSV로 바꾸면 모든 객체에 걸쳐 키마다 열이 하나씩 생기고, 열의 순서는 각 키가 처음 나타난 순서를 따라요. 중첩된 객체나 목록은 JSON 텍스트 형태로 해당 칸에 들어가고, null은 빈 칸이 되며, true와 false는 글자 그대로 적어요. 행은 CRLF로 구분하고, 필드는 구분자, 따옴표, 줄바꿈이 들어 있거나 양 끝에 공백이 있을 때만 따옴표로 감싸요.

[ 또는 {로 시작하는 입력은 JSON으로 읽어요. 칩 버튼으로 방향을 바꿀 수 있고, 버튼에는 CSV → JSON 또는 JSON → CSV라고 표시돼요. JSON → CSV 방향에서는 출력 옵션에 구분자 메뉴와 Excel용 옵션이 나타나요.

변환을 왕복하면 정보가 일부 사라져요. null과 빈 문자열은 모두 빈 칸이 되고, 중첩 구조는 되돌아오지 않아요. 구조가 필요하다면 원본 JSON을 보관하세요.

Excel, UTF-8, 그리고 BOM

CSV 파일은 바이트의 나열이고, 읽는 쪽은 인코딩을 알아야 해요. UTF-8은 악센트가 있는 글자와 여러 문자 체계를 담을 수 있어요. 파일 맨 앞의 3바이트인 BOM(바이트 순서 표시)은 파일이 UTF-8이라는 표시예요. BOM이 없으면 일부 스프레드시트 프로그램은 지역 코드 페이지로 파일을 읽어서 악센트가 있는 글자가 이상한 문자로 바뀌어요. 또 스프레드시트는 CSV를 열 때 02134를 2134로 바꿔 버리는 경우도 많아요.

Excel용 옵션은 내려받는 CSV 파일에만 BOM을 추가해요. 복사한 텍스트에는 추가하지 않으며, JSON → CSV 방향에서만 적용돼요. 입력된 파일의 BOM은 읽을 때 제거하므로, 이미 BOM이 있는 파일도 오류 없이 변환돼요.

예외 상황

  • 행마다 열 개수가 다른 경우. 헤더를 켜 두면 짧은 행은 빈 값으로 채우고, 긴 행은 남는 값을 column_N으로 유지해요. 결과에는 헤더와 열 개수가 다른 행이 몇 개인지도 표시돼요.
  • 헤더 이름이 반복되거나 비어 있는 경우. 같은 이름이 반복되면 _2, _3처럼 번호를 붙이고, 빈 이름은 column_N이 돼요. 두 키가 서로 덮어쓰지 않도록 하기 위한 처리예요.
  • 둥근 따옴표. 워드 프로세서의 스마트 따옴표는 CSV 따옴표가 아니므로, “Smith, Ann” 같은 필드는 쉼표에서 나뉘어요. 먼저 텍스트 줄바꿈 정리로 직선 따옴표로 바꾸거나, 둥근 따옴표 가이드의 방법을 따르세요.
  • 따옴표 안의 줄바꿈. 두 줄에 걸친 필드는 하나의 레코드예요. 그런데 중복 줄 제거는 입력을 줄바꿈마다 나누므로, 두 부분을 별개의 행으로 취급해요. JSON으로 변환한 뒤 객체를 비교하거나 직접 확인하세요. 이 도구는 한 줄에 값 하나씩 있는 목록에 유용해요.
  • 큰 파일. 결과 상자에는 처음 100,000자만 보여 주지만, 복사와 다운로드에는 전체 결과가 포함돼요.
  • 잘못된 JSON. 변환기는 오류가 난 줄과 열을 알려 주고, 문제 글자 아래에 캐럿(^)을 표시해요. JSON 포맷터는 흔한 실수를 설명하고, JSON 오류 가이드에서 더 자세히 다뤄요.

CSV 문제의 대부분은 구분자가 문제가 되기 전에, 필드 주변의 불필요한 공백, 파일 중간의 빈 행, 일관되지 않게 쓰인 따옴표에서 생겨요. 먼저 CSV 정리 도구로 정리한 뒤 변환하세요.

AI 도움을 받아 영어 원문에서 번역했어요.

댓글

    아직 댓글이 없어요. 첫 댓글을 남겨 보세요.

    별점 (선택)

    이메일은 공개되거나 보관되지 않아요.

    How to Remain Valuable When Intelligence Becomes Cheap 표지How to Remain Valuable When Intelligence Becomes Cheap

    AI가 대부분의 인지 업무를 해낼 때도 여전히 희소한 인간적, 경제적, 전략적 강점을 다룬 224쪽 분량이에요.

    $3.84Gumroad에서 받기영어로 보기