Skip to content

CSV to JSON 변환기 (CSV to JSON Converter)

브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.

트래킹 없음 브라우저 실행 무료
프리셋
옵션 · , · auto · LF · header · no BOM · flatten
구분자
첫 행이 헤더
타입 추론(숫자, 불리언, null)
0 0
JSON 출력
0 행 · 0 열
RFC 4180 준수, 타입 추론 정확성, 큰 정수 정밀도 보존, 헤더 없는 자동 명명 동작에 대해 검토 완료 — Go Tools Engineering Team · May 9, 2026

JSON이란 무엇이며 CSV에서 왜 변환하나요?

JSON(JavaScript Object Notation)은 API 응답, 설정 파일, 구조화된 데이터 교환을 위한 범용 형식입니다 — 모든 현대 프로그래밍 언어, 모든 데이터베이스, 모든 웹 프레임워크가 1급 JSON 지원을 제공합니다. 반면 CSV(Comma-Separated Values, 쉼표 구분 값)는 가장 오래되고 가장 널리 지원되는 표 형식입니다 — 모든 스프레드시트 앱, 모든 데이터베이스 내보내기, 모든 분석 도구가 이를 생성할 수 있습니다. 두 형식 간 변환은 데이터 엔지니어링에서 가장 일반적인 작업 중 하나입니다: 스프레드시트, 데이터베이스 덤프 또는 타사 내보내기에서 CSV를 받은 다음, API에 공급하거나, 프론트엔드를 채우거나, NoSQL 저장소에 로드하기 위해 JSON이 필요합니다. 이 도구는 그 변환 경로를 위해 만들어졌으며 대부분의 웹 변환기가 망치는 네 가지 시나리오를 처리합니다.

일반적인 웹 CSV-to-JSON 변환기와 비교할 때 이 도구에는 네 가지 중요한 차별점이 있습니다:

**1. RFC 4180 상태 머신 파서.** CSV는 단순해 보이지만 인용 규칙은 미묘합니다: 큰따옴표로 감싼 필드는 쉼표, 내장된 개행, 이스케이프된 큰따옴표(""처럼 두 번 작성)를 포함할 수 있습니다. 단순 쉼표 분할 파서는 실제 데이터에서 깨집니다 — 쉼표가 있는 주소, 여러 줄 텍스트 필드, 따옴표를 포함하는 인용 값. 이 도구는 RFC 4180(IETF의 CSV 명세)을 따르는 적절한 상태 머신 파서를 구현하며, 양방향에서 인용된 필드, 내장된 구분자, 내장된 줄 끝, 이스케이프된 따옴표를 올바르게 처리합니다. 출력은 Python의 csv 모듈, PostgreSQL COPY, AWS S3 SELECT, 모든 호환 파서를 통해 왕복 가능합니다.

**2. 큰 정수 안전성을 갖춘 타입 추론.** 타입 추론 켜기를 사용하면 숫자 문자열은 숫자가 되고, true/false는 불리언이 되며, 빈 셀은 null이 됩니다. 그러나 추론 파이프라인에는 두 가지 중요한 가드가 있습니다: 선행 0 문자열(007, 0123)은 선행 0이 식별자를 나타내기 때문에 문자열로 유지됩니다 — 숫자로 변환하면 0이 조용히 제거됩니다. 그리고 2^53 - 1(9007199254740991)을 초과하는 정수도 IEEE 754 정밀도 손실을 피하기 위해 문자열로 유지됩니다. Twitter snowflake ID, Discord ID, MongoDB Long 필드, K8s resourceVersion이 모두 조용히 반올림되지 않고 정확하게 유지됩니다. ISO 날짜 문자열은 의도적으로 문자열로 유지됩니다 — JSON에는 기본 날짜 타입이 없습니다.

**3. 헤더 자동 명명 또는 첫 행 사용.** 헤더 켜기(기본값)를 사용하면 첫 행이 컬럼 이름으로 처리되고 이후 각 행이 해당 이름으로 키가 지정된 JSON 객체가 됩니다. 헤더 끄기를 사용하면 파서가 컬럼을 col1, col2, col3로 자동 명명합니다 — 헤더 행이 없는 원시 데이터 덤프에 유용합니다. 구분자 칩 행은 가장 일반적인 네 가지 구분자를 다룹니다: 쉼표(RFC 4180 기본값), 세미콜론(Excel-EU 로케일), 탭(Unix 도구와 데이터 웨어하우스의 TSV), 파이프(쉼표가 많은 필드). 칩을 선택하고 파싱하세요 — 일반적인 실제 CSV에는 수동 구성이 필요 없습니다.

**4. 100% 브라우저 기반 개인 정보 보호.** CSV 데이터 — 종종 사용자 PII, 내부 데이터베이스 내보내기, 고객 레코드, 프로덕션 내보내기를 포함 — 가 브라우저를 벗어나지 않습니다. 어떤 서버로도 데이터가 전송되지 않고, 로깅도 없으며, 입력을 캡처하는 분석 도구도 없습니다. 브라우저의 네트워크 탭에서 확인할 수 있습니다. 이는 웹 도구에서 민감한 데이터를 처리하는 유일한 안전한 방법입니다. 방향 전환을 클릭하여 역방향을 보거나, CSV가 대상일 때는 동반 도구인 JSON to CSV 변환기를 사용하세요. 사용하기 전에 JSON 출력을 검증해야 한다면 JSON 포맷터를 사용해보세요.

JSON의 강점은 정확한 타입, 기본 중첩, 어디에서나 동일하게 파싱되는 엄격한 명세입니다 — 기계가 데이터를 소비할 때 적합한 형식입니다. CSV의 강점은 보편성과 사람이 읽기 쉬움입니다 — 사람이 스프레드시트를 열 때 적합한 형식입니다. 적합한 도구는 소비자에 따라 다릅니다: 사람이 스프레드시트를 읽음 → CSV, 기계가 API를 소비함 → JSON. 이 변환기는 양방향에서 다리 역할을 합니다.

// Input CSV (comma + LF, header on, infer types on)
id,name,active,score
1,Alice,true,98.5
2,Bob,false,87
3,Carol,true,

// Output JSON
[
  { "id": 1, "name": "Alice", "active": true, "score": 98.5 },
  { "id": 2, "name": "Bob", "active": false, "score": 87 },
  { "id": 3, "name": "Carol", "active": true, "score": null }
]

// Same input with Header off (no first-row keys)
1,Alice,true,98.5
2,Bob,false,87

// Becomes
[
  { "col1": 1, "col2": "Alice", "col3": true, "col4": 98.5 },
  { "col1": 2, "col2": "Bob", "col3": false, "col4": 87 }
]

주요 기능

RFC 4180 상태 머신 파서

IETF CSV 명세를 따르는 엄격한 상태 머신 파서: 인용된 필드, 내장된 구분자, 내장된 CR/LF, 이스케이프된 큰따옴표(두 번 작성)의 올바른 처리. 출력은 Python csv, PostgreSQL COPY, AWS S3 SELECT를 통해 깔끔하게 왕복합니다.

큰 정수 안전성을 갖춘 타입 추론

타입 추론 켜기는 숫자 문자열을 숫자로, true/false를 불리언으로, 빈 셀을 null로 변환합니다. 2^53 - 1보다 큰 정수는 IEEE 754 정밀도 손실을 피하기 위해 문자열로 유지됩니다; 선행 0 문자열(007, 0123)은 식별자 의미를 보존하기 위해 문자열로 유지됩니다.

헤더 켜기/끄기와 자동 명명

헤더 켜기(기본값)는 첫 행을 JSON 키로 사용합니다. 헤더 끄기는 컬럼을 col1, col2, col3 순서로 자동 명명합니다 — 헤더 행이 없는 원시 데이터 덤프와 머신 생성 CSV에 유용합니다. 자동 명명은 결정론적이며 파이프라인 친화적입니다.

쉼표, 세미콜론, 탭, 파이프 구분자

가장 일반적인 네 가지 구분자에 대한 원클릭 구분자 칩: `,`(RFC 4180 기본값), `;`(Excel-EU 로케일), `\t`(Unix 도구, BigQuery, Snowflake의 TSV), `|`(쉼표가 많은 자유 형식 텍스트 필드). 파서가 즉시 모드를 전환합니다 — 파일을 먼저 변환할 필요가 없습니다.

큰 정수 감지

2^53보다 큰 정수는 파싱 중에 감지되어 JSON에 문자열로 보존됩니다 — Twitter snowflake ID, Discord ID, MongoDB Long 필드, K8s resourceVersion이 자바스크립트의 IEEE 754 숫자 타입에 의해 조용히 반올림되지 않고 정확하게 유지됩니다.

전환을 통한 양방향 변환

방향 전환 버튼 하나로 변환이 그 자리에서 뒤집힙니다: 입력이 JSON이 되고, 출력이 CSV가 되며, 현재 텍스트가 보존됩니다. 파이프라인에 보내기 전에 양방향으로 데이터를 왕복하여 손실 없는 변환을 확인하세요.

예시

헤더가 있는 스프레드시트 내보내기

id,name,email,role
1,Alice,alice@example.com,admin
2,Bob,bob@example.com,editor
3,Carol,carol@example.com,viewer
4,Dan,dan@example.com,viewer

스프레드시트의 표준 CSV입니다. 헤더 켜기와 타입 추론 켜기를 사용하면 깔끔한 타입 지정 JSON을 얻을 수 있습니다: 정수는 정수로 유지되고 불리언/null이 감지됩니다.

탭 구분 로그 내보내기 (TSV)

ts	event	user	duration
2026-05-09T10:00:00Z	signup	alice	142
2026-05-09T10:01:00Z	login	alice	87
2026-05-09T10:02:00Z	checkout	alice	312
2026-05-09T10:03:00Z	logout	alice	44

구분자로 `\t`(Tab)를 선택하세요. 기본값인 헤더 켜기는 첫 행을 키로 자동 사용합니다.

Excel-EU CSV (세미콜론 구분자, CRLF)

id;name;price
1;Alice;1234,56
2;Bob;9876,54
3;Carol;42,00

DE/FR/IT/ES 로케일의 Excel은 쉼표가 소수 구분자이기 때문에 `;` 구분자를 출력합니다. 구분자 칩에서 `;`를 선택하세요 — 파서가 나머지를 처리합니다.

내장된 쉼표와 이스케이프된 따옴표

name,role,note
"Smith, Jr.",admin,"He said ""hi"""
"Doe, Jane",editor,"Two
lines"

표준 RFC 4180 인용: 인용된 필드는 구분자와 이스케이프된 따옴표(두 번 작성)를 포함할 수 있습니다. 파서는 상태 머신이며 — 따옴표 안에서 절대로 분할하지 않습니다.

큰 정수 ID가 포함된 CSV

id,event,user
9007199254740993,signup,alice
9007199254740994,login,bob
9007199254740995,checkout,carol

큰 정수는 자바스크립트의 안전 범위(2^53 - 1)를 초과합니다. 타입 추론 켜기를 사용하면 파서가 이를 감지하고 정밀도를 보존하기 위해 값을 문자열로 유지합니다 — 잘림이 없습니다.

헤더 없는 CSV

1,Alice,admin
2,Bob,editor
3,Carol,viewer
4,Dan,viewer

헤더를 끄세요; 컬럼은 자동으로 `col1`, `col2`, `col3`로 명명됩니다. 헤더 행이 없는 원시 데이터 덤프에 사용하세요.

사용 방법

  1. 1

    CSV 붙여넣기

    위 입력 필드에 CSV를 입력하거나 붙여넣으세요. 도구는 쉼표, 세미콜론, 탭, 파이프로 구분된 데이터를 받아들입니다. '예시 불러오기'를 클릭하여 스프레드시트 내보내기, TSV 로그, 세미콜론을 사용하는 Excel-EU CSV 같은 샘플을 사용해 볼 수도 있습니다.

  2. 2

    구분자 선택(또는 Tab)

    한 번의 클릭으로 구분자를 전환하려면 `,`(기본값), `;`(Excel-EU 세미콜론), `\t`(TSV) 또는 `|`(Pipe)를 클릭하세요. 세밀한 제어를 위해 옵션 패널을 여세요: 헤더 켜기/끄기와 타입 추론 켜기/끄기. 헤더 끄기는 컬럼을 col1, col2, col3로 자동 명명합니다.

  3. 3

    JSON 복사 또는 다운로드

    복사를 클릭하여 JSON을 클립보드에 저장하거나 다운로드를 클릭하여 코드, API 또는 파이프라인에서 바로 사용할 수 있는 .json 파일로 저장하세요. 왕복 변환을 위해 방향 전환을 클릭하면 그 자리에서 JSON을 다시 CSV로 변환합니다.

일반적인 변환 함정

원본의 내장된 쉼표가 인용되지 않음

naive join(',')으로 CSV를 수동으로 만들면 쉼표를 포함하는 모든 필드(Smith, Jr. 또는 1,234.56)가 컬럼 경계를 깨뜨립니다 — 파서는 한 컬럼이어야 할 곳에 추가 컬럼이 있다고 봅니다. 해결 방법은 RFC 4180에 따라 문제의 필드를 큰따옴표로 감싸는 것입니다. 이 도구는 인용된 필드를 올바르게 처리하지만, 원본 CSV는 적절한 인용을 사용해야 합니다.

✗ 오류
name,role
Smith, Jr.,admin
// Parser reads 3 columns: "Smith", " Jr.", "admin"
✓ 정상
name,role
"Smith, Jr.",admin
// Parser reads 2 columns: "Smith, Jr.", "admin"

Excel-EU 세미콜론이 쉼표로 파싱됨

유럽의 Excel 로케일(독일, 프랑스, 스페인, 이탈리아 등)은 쉼표가 소수 구분자로 예약되어 있기 때문에 세미콜론으로 구분된 CSV를 출력합니다. 구분자를 `,`(기본값)에 두면 모든 행이 내장된 세미콜론이 있는 단일 컬럼으로 축소됩니다. `;` 구분자 칩을 선택하세요 — 파서가 세미콜론 모드로 전환되어 올바른 컬럼을 생성합니다.

✗ 오류
// Wrong delimiter (default comma) on Excel-EU file
id;name;price
1;Alice;1234,56
// Each row becomes one column: { col1: "1;Alice;1234,56" }
✓ 정상
// Correct: pick `;` Delimiter chip
id;name;price
1;Alice;1234,56
// Output: { id: 1, name: "Alice", price: "1234,56" }

JSON.parse 후 큰 정수 ID의 정밀도 손실

Twitter snowflake ID, Discord ID, 기타 64비트 정수는 자바스크립트의 안전 범위(2^53 - 1)를 초과하며 JSON.parse()가 숫자로 읽을 때 정밀도가 손실됩니다. 타입 추론 켜기를 사용하면 이 도구는 안전 경계를 초과하는 값을 감지하고 대신 문자열로 유지하여 정확한 자릿수를 보존합니다. 코드에서 BigInt("9007199254740993")을 사용하여 숫자 타입으로 다시 변환하세요.

✗ 오류
// Without big-int detection
{"id": 9007199254740993}
// JavaScript reads as 9007199254740992 (precision lost)
✓ 정상
// With Infer types on, big integers stay as strings
{"id": "9007199254740993"}
// Use BigInt(value) in code to preserve precision

헤더 행에 공백이 포함됨

CSV 헤더가 `id, name, email`(쉼표 뒤에 공백)이면 JSON 키는 "id", " name", " email"이 됩니다 — 선행 공백을 포함합니다. 파서는 RFC 4180에 따라 헤더를 주어진 그대로 보존합니다. 해결 방법은 붙여넣기 전에 원본 CSV를 정리하거나 다운스트림에서 키 이름을 변경하는 것입니다(jq 'with_entries(.key |= ltrimstr(" "))' 또는 자바스크립트 Object.fromEntries(Object.entries(o).map(([k,v]) => [k.trim(), v]))).

✗ 오류
id, name, email
1, Alice, alice@example.com
// Output keys: "id", " name", " email" (with leading spaces)
✓ 정상
id,name,email
1,Alice,alice@example.com
// Output keys: "id", "name", "email" (clean)

행 길이가 일치하지 않음

CSV의 행에 다른 컬럼 수가 있을 때(일부에는 후행 쉼표가 있고, 일부에는 없음), 파서는 누락된 셀을 빈 문자열로(또는 타입 추론이 켜져 있을 때 null) 채우고 헤더 길이를 초과하는 추가분을 삭제합니다. 행이 정규화되었음을 알 수 있도록 스키마 노트 경고가 나타납니다. 일반적으로 괜찮지만, 다운스트림 소비자가 엄격한 행 형태를 기대한다면 출력을 확인하세요.

✗ 오류
name,role,note
Alice,admin
Bob,editor,first day
// Row 1 is short by one cell
✓ 정상
// Output (note empty/null cell in row 1)
[
  { "name": "Alice", "role": "admin", "note": null },
  { "name": "Bob", "role": "editor", "note": "first day" }
]

예상치 못한 날짜 문자열 강제 변환

ISO 8601 날짜 문자열(2026-05-09T10:00:00Z)은 의도적으로 JSON 출력에서 문자열로 유지됩니다 — JSON에는 기본 날짜 타입이 없기 때문에 강제 변환하면 직렬화에서 살아남지 못하는 자바스크립트 Date 객체나 시간대 정보를 잃는 숫자 epoch가 생성됩니다. 의도된 설계입니다. 사용 시점에 new Date(value) 또는 선택한 날짜 라이브러리로 날짜를 파싱하세요. 날짜를 보존하기 위해서만 타입 추론을 끄지 마세요 — 그러면 숫자도 문자열로 유지됩니다.

✗ 오류
// Expecting a Date object in the output
ts,event
2026-05-09T10:00:00Z,signup
// Output ts is the string "2026-05-09T10:00:00Z", NOT a Date
✓ 정상
// Correct: parse at the point of use in your code
const rows = JSON.parse(output);
const when = new Date(rows[0].ts);
// when is now a Date object

주요 사용 사례

스프레드시트 내보내기를 API 가져오기로
Excel, Google Sheets 또는 Numbers에서 내보낸 CSV를 붙여넣어 REST API에 POST하거나, GraphQL 변이, 대량 가져오기 엔드포인트에 바로 사용할 수 있는 객체의 JSON 배열을 받으세요. 가장 일반적인 사용 사례입니다 — 분석가가 스프레드시트 데이터를 생성하고, 엔지니어는 백엔드를 공급하기 위해 타입 지정된 JSON이 필요합니다.
Excel 내보내기를 도구로
Excel CSV 내보내기(`;` 칩이 있는 Excel-EU 세미콜론 구분 파일 포함)를 자바스크립트 도구, jq 스크립트 또는 JSON을 읽는 모든 시스템으로 처리하기 위한 JSON으로 변환합니다. 파서는 BOM 제거와 CRLF 줄 끝을 올바르게 처리하므로 Excel 내보내기가 첫 행에서 깨지지 않습니다.
TSV 로그를 분석으로
BigQuery 내보내기, Snowflake 언로드, Vector 파이프라인 또는 Unix 도구(cut, awk)의 탭 구분 로그는 종종 .tsv로 도착합니다. Tab 구분자 칩을 선택하고 임시 분석, 대시보드 수집 또는 파이프라인 단계 변환에 바로 사용할 수 있는 타입 지정된 JSON 배열을 받으세요.
데이터베이스 CSV 덤프를 ETL로
PostgreSQL COPY TO CSV 출력, MySQL SELECT INTO OUTFILE 또는 모든 데이터베이스 CSV 덤프를 NoSQL 저장소에 로드, 자바스크립트 ETL 파이프라인 공급, 또는 BigQuery에 줄 구분 JSON으로 보내기 위한 JSON으로 변환합니다. 큰 정수 감지는 자바스크립트의 안전 범위를 초과하는 숫자 ID를 보존합니다.
Postman/Newman CSV 테스트 결과 소비
Postman 테스트 실행은 요청별 통과/실패의 CSV 보고서를 내보냅니다. 프로그래밍 방식 소비를 위해 JSON으로 변환하세요 — 상태 대시보드, 알림 파이프라인 또는 테스트 결과 집계기로 공급. 형식이 다른 행(실패한 테스트는 추가 error 컬럼이 있음)은 빈/null 채우기로 처리됩니다.
작은 CSV를 빠른 JSON 설정으로
통화 코드, 국가 이름, 제품 SKU 같은 작은 CSV가 있고 설정 파일이나 자바스크립트 상수를 위한 JSON 배열이 필요하신가요? 붙여넣고, 복사하고, 붙여넣으세요. 타입 추론 켜기를 사용하면 숫자와 불리언이 올바르게 타입 지정됩니다; 헤더 켜기를 사용하면 .json 파일에 바로 넣을 수 있는 명명된 필드 객체의 배열을 얻습니다.

기술 세부 정보

RFC 4180 상태 머신 파서 내부
파서는 RFC 4180을 따르는 적절한 유한 상태 머신 구현입니다. 상태에는 UnquotedField, QuotedField, AfterQuote, RowEnd, EndOfInput이 포함됩니다. 파서는 구분자를 포함하는 인용된 필드, 인용된 필드 안에 내장된 CR/LF, 이스케이프된 큰따옴표(""처럼 두 번 작성), 후행 개행을 올바르게 처리합니다. 이는 Python의 csv 모듈, PostgreSQL COPY, AWS S3 SELECT, 모든 호환 파서를 통해 손실 없이 왕복하는 출력을 생성합니다. 상태 머신은 구분자를 인식하므로 `,`에서 `;` 또는 `\t`로 전환해도 인용 의미는 변경되지 않습니다 — 필드 구분자만 변경됩니다.
타입 추론 알고리즘
타입 추론 켜기를 사용하면 각 셀이 순서가 지정된 감지 파이프라인을 거칩니다. 첫째, 빈 셀은 JSON null이 됩니다. 둘째, 리터럴 문자열 true와 false는 JSON 불리언이 됩니다. 셋째, 선행 0 문자열(^0[0-9]+$)은 식별자 의미를 보존하기 위해 문자열로 유지됩니다 — 숫자로 변환하면 선행 0이 조용히 제거됩니다. 넷째, 정수 리터럴이 안전 정수 경계(-2^53+1에서 2^53-1)에 대해 테스트됩니다; 이 범위를 벗어나는 값은 IEEE 754 정밀도 손실을 피하기 위해 문자열로 유지됩니다. 다섯째, ISO 8601 날짜 문자열은 정규식으로 감지되어 의도적으로 문자열로 유지됩니다 — JSON에는 기본 날짜 타입이 없습니다. 다섯 가지 가드를 모두 통과하는 것은 Number()를 통해 변환되거나(숫자) 문자열로 유지됩니다(그 외 모든 것).
BOM 제거와 인코딩 처리
모든 입력은 UTF-8로 처리됩니다. 선택적 UTF-8 BOM(0xEF 0xBB 0xBF)은 존재할 때 첫 행의 첫 셀에서 조용히 제거됩니다 — 이렇게 하면 BOM 바이트가 첫 컬럼 이름의 시작 부분에 떠다니는 문자로 포함되는 것을 방지합니다(Windows의 Excel은 일반적으로 BOM을 출력하여 단순한 파서를 깨뜨립니다). 기타 인코딩(Windows-1252, ISO-8859-1)은 자동 감지되지 않습니다; 텍스트가 이 도구에 도달할 때쯤이면 브라우저 File API가 이미 바이트를 UTF-8로 디코딩했을 것입니다. UTF-8이 아닌 입력이 있는 경우 붙여넣기 전에 iconv 또는 편집기의 인코딩 내보내기 옵션으로 먼저 변환하세요.

모범 사례

쉼표가 아닌 데이터에는 구분자를 명시적으로 선택
자동 감지에 의존하지 마세요. CSV가 세미콜론(Excel-EU), 탭(BigQuery, Snowflake 또는 Unix 도구의 TSV) 또는 파이프(쉼표가 많은 필드)를 사용한다면 붙여넣기 전에 일치하는 구분자 칩을 클릭하세요. 파서는 구분자를 인식합니다: 칩을 전환하면 입력이 즉시 다시 파싱됩니다. 이렇게 하면 파서가 잘못된 구분자를 사용하여 모든 행이 한 셀로 축소되는 가장 일반적인 CSV-to-JSON 실패 모드를 피할 수 있습니다.
타입 지정된 JSON을 위해 타입 추론 켜기 유지
타입 추론 켜기(기본값)를 사용하면 타입 지정된 JSON을 얻습니다: 숫자는 숫자로, 불리언은 불리언으로, 빈 셀이 나타나는 곳에 null. 이는 대부분의 소비자가 원하는 것입니다 — API, 프론트엔드, 자바스크립트 코드. 다운스트림 타입 엄격 소비자, 정확한 원본 바이트를 비교하는 검증 파이프라인 등 모든 셀을 문자열로 보존해야 하는 경우에만 타입 추론을 끄세요. 감지 파이프라인에는 선행 0 문자열, 큰 정수, ISO 날짜에 대한 가드가 있으므로 추론이 켜져 있어도 식별자와 날짜가 안전하게 유지됩니다.
업스트림 CSV에서 ID를 문자열로 인용
CSV가 사용자가 제어하는 데이터베이스나 파이프라인에서 생성된다면, 큰 숫자 ID(Twitter snowflake, Discord ID, K8s resourceVersion)를 인용된 CSV 문자열("9007199254740993")로 출력하여 타입 추론을 깔끔하게 통과하도록 하세요. 파서는 어쨌든 이를 문자열로 유지합니다(큰 정수 감지가 2^53 - 1을 초과하는 값을 잡아냄), 하지만 명시적인 인용은 가장 견고한 업스트림 계약이며 정밀도에 대한 모호함을 피합니다.
헤더 행은 첫 줄이어야 함
헤더 켜기(기본값)는 첫 행을 컬럼 이름으로 자동 감지합니다. CSV에 헤더 앞에 주석, 빈 줄 또는 메타데이터가 있다면 붙여넣기 전에 제거하세요 — 파서는 선행 비데이터 줄을 건너뛰지 않습니다. 헤더 없는 CSV(원시 내보내기, 머신 생성 덤프)의 경우 헤더를 끄면 컬럼이 col1, col2, col3 순서로 자동 명명됩니다. 헤더 없는 파일에 하나를 앞에 추가하여 헤더를 위조하려고 하지 마세요; 헤더를 끄거나 원본을 수정하세요.
CSV → JSON → CSV 왕복에는 문자열화 모드 사용
양방향(CSV → JSON → CSV)을 통해 데이터를 왕복할 계획이라면 역방향(JSON → CSV)은 중첩된 배열이나 객체가 손실 없이 살아남기 위해 문자열화 모드가 필요합니다. 역방향의 평탄화 모드는 CSV 파서가 완벽하게 재구성할 수 없는 점으로 연결된 키(customer.address.city)를 출력합니다. 전체 역방향 참조와 왕복 테스트 노트는 JSON to CSV 변환기를 참조하세요.

자주 묻는 질문

이 도구는 어떤 일을 하나요?
브라우저에서 CSV를 JSON으로 직접 변환하며 양방향 지원도 제공합니다. 방향 전환을 클릭하면 같은 패널에서 JSON을 다시 CSV로 변환할 수 있습니다. 입력 영역에 CSV를 붙여넣으면 도구가 즉시 JSON 출력을 생성합니다 — 업로드, 가입, 데이터 유출이 전혀 없습니다. 파서는 RFC 4180을 준수하며, 쉼표, 세미콜론(Excel-EU), 탭(TSV), 파이프에 대한 구분자 칩을 처리하고, 타입 추론 옵션은 숫자 문자열을 숫자로, true/false를 불리언으로, 빈 셀을 null로 변환합니다. 도구는 또한 JSON.parse를 통해 정밀도가 손실될 큰 정수 ID, 인용된 필드 안에 내장된 쉼표, 이스케이프된 큰따옴표(두 번 작성), 자동으로 명명된 컬럼(col1, col2, col3)이 있는 헤더 없는 데이터를 처리합니다.
내 데이터가 어딘가로 업로드되나요?
아니요. 모든 변환은 자바스크립트를 사용하여 브라우저에서 100% 클라이언트 측에서 실행됩니다. CSV 데이터는 전송되지 않고, 어떤 서버에도 저장되지 않으며, 기록되거나 분석되지 않습니다. 따라서 PII가 포함된 스프레드시트 내보내기, 내부 데이터베이스 CSV 덤프, 고객 레코드, 기타 민감한 데이터에 안전하게 사용할 수 있습니다. 브라우저의 네트워크 탭에서 확인할 수 있습니다 — CSV를 붙여넣어도 네트워크 요청이 전혀 발생하지 않습니다. 입력 데이터에 쿠키를 사용하지 않으며, 붙여넣은 내용을 캡처할 수 있는 타사 분석 도구도 사용하지 않습니다.
타입 추론은 어떻게 작동하나요?
타입 추론 켜기를 사용하면 파싱된 각 셀이 JSON에 배치되기 전에 작은 감지 파이프라인을 거칩니다: 숫자 문자열(1, 42, -3.14)은 숫자가 되고, true/false는 불리언이 되며, 빈 문자열과 리터럴 null은 JSON null이 되고, 그 외 모든 것은 문자열로 유지됩니다. 두 가지 중요한 가드가 있습니다. 첫째, 007이나 0123 같은 선행 0 문자열은 숫자처럼 보이더라도 문자열로 유지됩니다 — 선행 0은 값이 식별자(우편번호, 전화번호 코드, 시퀀스 ID)임을 나타내며 숫자로 변환하면 0이 조용히 제거됩니다. 둘째, 2^53 - 1(9007199254740991)을 초과하는 정수도 IEEE 754 정밀도 손실을 피하기 위해 문자열로 유지됩니다. ISO 날짜 문자열(2026-05-09T10:00:00Z)은 의도적으로 문자열로 남깁니다 — JSON에는 기본 날짜 타입이 없기 때문에 강제 변환하면 직렬화에서 살아남지 못하는 자바스크립트 Date 객체가 생성됩니다.
큰 정수가 문자열로 유지되는 이유는 무엇인가요?
자바스크립트의 Number 타입은 IEEE 754 배정밀도를 사용하며 2^53 - 1(9007199254740991)까지의 정수만 정확하게 표현할 수 있습니다. 실제 식별자 — Twitter snowflake ID, Discord ID, MongoDB Long 필드, K8s resourceVersion — 는 이 안전 범위를 초과하는 64비트 정수입니다. 파서가 이들에 대해 Number()를 호출하면 결과가 조용히 반올림됩니다(9007199254740993이 9007199254740992가 됨). 타입 추론 파이프라인은 안전 정수 경계를 초과하는 값을 감지하고 대신 문자열로 유지하므로 자릿수가 그대로 유지됩니다. 영향받은 필드를 나열하는 경고 배너가 출력 아래에 나타납니다. 코드에서 다시 정확하게 변환하려면 JSON 문자열 값에 BigInt("9007199254740993")를 사용하세요.
내 CSV가 세미콜론을 사용합니다 — 어떻게 파싱하나요?
유럽의 Excel 로케일(독일, 프랑스, 스페인, 이탈리아 등)은 쉼표가 소수 구분자로 예약되어 있기 때문에 세미콜론으로 구분된 CSV를 출력합니다. 구분자 행에서 `;` 칩을 클릭하거나(또는 전체 옵션 패널을 열고 `;`를 선택) 파서가 즉시 세미콜론 모드로 전환됩니다. 이러한 파일 안의 쉼표 소수가 있는 숫자 값(1234,56)은 유럽 소수 표기법이 로케일별이기 때문에 타입 추론에 의해 문자열로 유지됩니다 — 숫자 값이 필요하면 코드에서 변환하세요. 파서는 새 구분자로 RFC 4180 인용 규칙을 여전히 적용하므로 안에 세미콜론을 포함하는 인용된 필드도 올바르게 처리됩니다.
TSV(탭 구분)를 처리하나요?
그렇습니다. 구분자 행에서 Tab 칩을 클릭하면 파서가 쉼표 대신 탭 문자로 분할합니다. TSV는 텍스트 필드 안에 탭이 나타날 가능성이 낮아 대부분의 인용 엣지 케이스를 제거하기 때문에 로케일 간 CSV 공유에서 가장 깔끔한 형식입니다. Unix 도구(cut, awk), 데이터 웨어하우스(BigQuery, Snowflake)의 기본 출력이며 모든 로케일에서 Excel이 잘 지원합니다. .tsv 또는 .tab 파일 내용을 직접 붙여넣으세요 — 나머지 파서(헤더 자동 명명, 타입 추론, 큰 정수 감지)는 동일하게 작동합니다.
내 CSV에 헤더 행이 없으면 어떻게 되나요?
옵션 패널에서 헤더를 끄세요. 파서는 첫 줄을 컬럼 이름이 아닌 데이터로 처리하고 키를 자동 생성합니다: col1, col2, col3, … 컬럼당 하나씩. 출력 JSON은 이러한 합성 키를 가진 객체 배열입니다. 이는 헤더를 생략하는 데이터베이스의 원시 내보내기, 고정 형식 플랫 파일, 머신 생성 CSV에 유용합니다. 다른 키 이름을 원하면 먼저 자동 명명으로 변환한 다음 다운스트림 파이프라인(jq, 자바스크립트 map 등)에서 키 이름을 변경하세요. 도구는 데이터 휴리스틱에서 키를 추론하지 않습니다 — 헤더 끄기는 항상 col1, col2, col3을 생성합니다.
내장된 쉼표가 있는 인용된 필드를 처리할 수 있나요?
그렇습니다. 파서는 적절한 RFC 4180 상태 머신입니다: 여는 큰따옴표를 보면 QuotedField 상태로 전환되고, 다음 이스케이프되지 않은 큰따옴표까지의 모든 것을 구분자와 내장된 줄 끝(CR/LF)을 포함하여 단일 필드로 처리합니다. 이스케이프된 큰따옴표(""처럼 두 번 작성)는 단일 따옴표로 올바르게 축소됩니다. 즉, `"Smith, Jr."`는 `Smith, Jr.`를 포함하는 하나의 필드로 파싱되고, `"He said ""hi"""`는 `He said "hi"`로 파싱됩니다. 단순한 쉼표 분할 파서는 이러한 실제 데이터에서 깨지지만, 이 도구는 그렇지 않습니다.
내 날짜가 문자열로 유지되는 이유는 무엇인가요?
의도된 설계입니다. JSON에는 기본 날짜 타입이 없습니다 — 문자열, 숫자, 불리언, null, 배열, 객체만 있습니다. ISO 8601 날짜 문자열(2026-05-09T10:00:00Z)은 JSON 출력에서 문자열로 그대로 유지되며, 이는 정확하고 손실 없는 표현입니다. 파서가 이를 자바스크립트 Date 객체로 강제 변환하면, 결과 JSON을 직렬화하면 다른 출력(유용한 왕복 표현이 없는 객체 또는 숫자 타임스탬프)이 생성됩니다. JSON에서는 날짜를 문자열로 유지하고 사용 시점에 new Date(value) 또는 선택한 날짜 라이브러리로 파싱하세요. 이는 모든 주요 JSON-from-CSV 파이프라인의 동작과 일치합니다: Pandas, jq, Python csv + json 모듈.
행의 길이가 다르면 어떻게 되나요?
형식이 다른 행(헤더보다 컬럼이 많거나 적은 행)은 헤더 길이에 맞춰 채워집니다. 헤더 수를 초과하는 추가 셀은 삭제되고, 누락된 셀은 빈 문자열로 설정됩니다(또는 타입 추론이 켜져 있고 파서가 빈 값을 보면 null). 행이 정규화되었음을 알 수 있도록 출력 아래에 스키마 노트 경고가 나타납니다. 키를 합치는 다운스트림 도구에는 일반적으로 괜찮지만, 소비자가 엄격한 행 형태 일관성을 기대한다면 출력을 확인하세요. 가장 일반적인 원인은 일부 행의 후행 쉼표 또는 업스트림 내보내기에서 잘못 계산된 내장된 줄 끝이 있는 인용된 필드입니다.
얼마나 큰 파일을 붙여넣을 수 있나요?
100,000자 또는 2,000행 이상에서는 실시간 변환이 자동으로 수동 모드로 전환됩니다: 정보 배너에 변환 버튼이 나타나며 클릭할 때만 변환이 실행됩니다. 이렇게 하면 무거운 파싱 중에 키 입력마다 브라우저의 메인 스레드가 블로킹되는 것을 방지합니다. 5MB 또는 50,000행을 초과하는 출력의 경우 도구는 화면 JSON 미리보기를 첫 500행으로 잘라내고 N행 중 첫 500행 표시 배너를 보여줍니다 — 하지만 다운로드 버튼은 여전히 모든 행이 포함된 전체 파일을 생성합니다. 입력의 절대 상한은 10MB이며, 그 이상이면 도구가 오류를 표시하고 입력을 줄이도록 요청합니다.
JSON → CSV → JSON 왕복이 가능한가요?
그렇습니다. JSON이 평탄(중첩 객체나 배열 없음)할 때 가능합니다. 중첩 데이터의 경우 역방향(JSON → CSV)은 배열과 객체를 한 셀 안에 JSON으로 유지하기 위해 문자열화 모드가 필요합니다 — 그러면 타입 추론이 켜져 있을 때 이 CSV → JSON 변환기를 통해 손실 없이 왕복됩니다. 패널 상단의 방향 전환을 클릭하여 JSON-to-CSV 모드로 뒤집고 왕복을 확인하세요. 역방향의 평탄화 모드는 단방향입니다: CSV에서 완벽하게 재구성할 수 없는 점으로 연결된 키(customer.address.city)를 출력합니다. 전체 문자열화 지원을 갖춘 역방향은 JSON to CSV 변환기를 참조하세요.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

JSON Diff 비교

인코딩 & 포매팅

두 JSON 파일을 브라우저에서 즉시 Diff 비교하세요. 나란히 보기 하이라이팅, RFC 6902 JSON Patch 출력, 타임스탬프·ID 같은 노이즈 필드 무시. 비공개, 업로드 없음.

JSON 포맷터 (JSON Formatter)

인코딩 & 포매팅

브라우저에서 JSON을 즉시 포매팅하고 유효성 검사를 수행합니다. 온라인 도구로 구문 검사, 오류 감지, 최소화, 복사를 지원하며 데이터는 서버로 전송되지 않습니다.

JSON Schema 검증기

인코딩 & 포매팅

JSON Schema 온라인 검증기. Draft 2020-12, 2019-09, Draft-07 지원에 JSON Pointer 경로 단위 오류 메시지. 100% 브라우저 처리, 업로드 없음, 무료.

JSON to CSV 변환기 (JSON to CSV Converter)

인코딩 & 포매팅

브라우저에서 JSON을 CSV로 변환합니다. RFC 4180, Excel-EU, TSV, Pipe 프리셋 지원. 중첩 평탄화 또는 문자열화. 100% 비공개, 업로드 없음.

JSON to YAML 변환기 (JSON to YAML Converter)

인코딩 & 포매팅

JSON을 붙여넣으면 즉시 YAML로 변환됩니다. 브라우저에서 실시간 변환, K8s/Compose 지원, 2/4칸 들여쓰기, Norway 안전 자동 인용, 100% 개인 정보 보호.