CSV·JSON 변환기
CSV를 JSON 배열로, JSON을 CSV로 변환합니다. 구분 기호를 자동으로 감지하고 세미콜론과 소수점 쉼표를 쓰는 Excel 파일도 읽습니다.
코드 예제
내 프로젝트에 그대로 복사해서 쓰세요. 모든 예제는 해당 언어의 표준 라이브러리만 사용하므로 설치할 것이 없습니다.
const text = 'name,city\nAnn,Utrecht\nBob,"Den Haag, NL"\n'
const trimmed = text.trimEnd()
const records = [[]]
for (const match of trimmed.matchAll(/("(?:[^"]|"")*"|[^,\n]*)(,|\n|$)/gu)) {
if (match.index === trimmed.length) break
const [, field, end] = match
records.at(-1).push(field.startsWith('"') ? field.slice(1, -1).replaceAll('""', '"') : field)
if (end === '\n') records.push([])
}
const [header, ...rows] = records
const objects = rows.map((row) => Object.fromEntries(header.map((name, i) => [name, row[i]])))
console.log(JSON.stringify(objects))기능
CSV를 JSON 배열로, JSON을 CSV로 변환합니다. CSV는 RFC 4180에 따라 읽으며 따옴표로 감싼 필드, 겹따옴표, 필드 안의 줄바꿈을 처리합니다.
사용 방법
- CSV나 JSON을 붙여넣거나 파일을 끌어다 놓으세요.
- CSV → JSON 또는 JSON → CSV를 고르세요. 구분 기호와 소수점은 자동 감지로 두거나 직접 지정할 수 있습니다.
- 결과를 복사하거나 내려받거나, 출력을 입력으로 사용으로 다음 입력으로 쓰세요.
예시
CSV name;price / cheese;12,50은 [{"name": "cheese", "price": 12.5}]이 되고, 헤더 줄을 끄면 [["name", "price"], ["cheese", 12.5]]가 됩니다.
알아두기
- 헤더 줄을 켜면 각 줄이 열 이름을 키로 하는 객체가 됩니다. 필드 수가 다른 줄은 줄 번호와 함께 알려 줍니다.
- 구분 기호는 처음 몇 줄에서 감지합니다(쉼표, 세미콜론, 탭, 파이프). 세미콜론과 소수점 쉼표를 쓰는 Excel은 자동 감지에서 12.5로 읽힙니다.
- 다시 읽었을 때 똑같은 값만 숫자가 되므로
007,1.50, 아주 긴 숫자는 텍스트로 남습니다. 숫자 읽기를 끄면 모두 텍스트로 유지됩니다. - JSON → CSV에는 객체 배열(열은 키의 합집합) 또는 배열의 배열이 필요합니다. 중첩된 값은 JSON 텍스트로 씁니다.
CSV 파일은 어떻게 읽나요?
RFC 4180을 따릅니다. 필드는 구분 기호로 나누고, 큰따옴표로 감싼 필드에는 구분 기호와 줄바꿈이 들어갈 수 있으며, 안의 따옴표는 두 번 씁니다. 구분 기호는 처음 몇 줄에서 감지합니다.
자주 묻는 질문
숫자가 텍스트가 되거나 그 반대가 되는 이유는?
다시 읽었을 때 똑같은 값만 숫자가 됩니다. 007, 1.50, 아주 긴 숫자는 텍스트로 남습니다. “숫자와 true/false 읽기”를 끄면 모두 텍스트로 유지됩니다.
세미콜론 Excel 형식이란?
지역 설정에 따라 Excel은 필드를 세미콜론으로 나누고 소수점에 쉼표를 씁니다. 구분 기호나 소수점이 “자동 감지”이면 12,50을 12.5로 읽고, 소수점 쉼표를 고르면 JSON → CSV는 세미콜론 파일로 씁니다.
데이터가 어딘가로 전송되나요?
아니요. 변환은 브라우저에서 이루어지며 붙여넣은 내용은 서버로 전송되지 않습니다.