JSON·CSV 변환
객체 배열과 CSV 표를 서로 변환해요. 따옴표·쉼표 규칙 처리.
이럴 때 쓰세요
이렇게 사용하세요
결과가 예상과 다를 때
결과가 잘려 보여요
전체 결과는 복사 버튼으로 받을 수 있어요.
입력한 내용이 사라졌어요
이 기기에 자동 저장돼요. 브라우저 저장소를 지우면 함께 사라져요.
자주 하는 실수
- 엑셀이 저장한 CSV는 줄바꿈이 캐리지 리턴에 줄바꿈을 더한 형태라 마지막 칸에 숨은 문자가 붙습니다. 값이 '3 ' 처럼 보이면 그 줄바꿈을 지우세요.
- 머리글 첫 칸 앞에 붙은 표시 문자 때문에 첫 키가 보이지 않는 글자로 시작할 수 있습니다. 첫 칸 앞의 문자를 지우세요.
- 열이 머리글보다 많으면 초과분은 조용히 버려집니다. 줄이 잘렸다고 생각하기 쉬우니 원본을 확인하세요.
- null 은 객체로 취급돼 문자열 null 이 되어 나옵니다. JSON으로 되돌리면 문자열이 되므로 빈 칸으로 다르게 표시됩니다.
계산 근거
CSV는 RFC 4180의 텍스트 교환 형식입니다. 값에 쉼표·따옴표·줄바꿈이 있으면 따옴표로 감싸고 안의 따옴표는 두 개로 씁니다. CSV에는 숫자와 문자열 구분이 없어 모든 칸이 문자열입니다. 한국어 엑셀과 맞춰 쓰려면 UTF-8로 저장하는 편이 안전합니다.
실제로 계산해 보면
이름에 쉼표와 따옴표가 섞인 3건을 CSV로 바꾸면?
머리글 name,age 아래 '토리, 하나' 는 "토리, 하나" 로, '말 "친구"' 는 "말 ""친구""" 로 감싸집니다. 머리글까지 4줄이야.
'name,age' 머리글에 달곰,3 한 줄을 되돌리면 값 타입은?
age 가 숫자 3 이 아니라 문자열 "3" 으로 나옵니다. CSV엔 숫자 개념이 없어 모든 칸이 문자열로 채워집니다.
'a,b,c' 머리글에 값이 넷인 줄을 되돌리면?
네 번째 값은 머리글 이름이 없어 버려집니다. 결과는 a=1, b=2, c=3 뿐이므로 원본 줄이 잘렸는지 반드시 확인하세요.
더 궁금한 것
값 안에 줄바꿈이 있으면 어떻게 되나요?
JSON 쪽에서 CSV로 바꿀 때는 따옴표로 감싸 그대로 지켜줍니다. 반대로 CSV를 JSON으로 되돌리면 줄 단위로 쪼개져 값이 둘로 갈라지고 맨 뒤에 잘못된 쌍이 생겨요.
객체가 값으로 들어오면 어떻게 되나요?
한 칸에 JSON 문자열로 접어 넣습니다. 다시 읽어도 객체가 아니라 문자열이 되므로, 중첩 구조가 필요하면 평탄화해 두는 편이 낫습니다.
한국어가 깨지는데 어디를 봐야 하나요?
저장한 쪽의 인코딩을 UTF-8로 맞추세요. 구형 기본값으로 저장하면 메모장에서도 정상인데 엑셀에서만 깨지는 경우가 있습니다.
알아둘 경계값
- 두 번째 객체에만 있는 키도 머리글에 추가돼서 첫 줄에는 빈 칸으로 나와요. 합집합 순서이니 첫 객체만 보고 판단하지 마세요.
- 캐리지 리턴만 든 값은 따옴표로 감싸지지 않아요. 줄이 어긋날 수 있으니 넣기 전에 캐리지 리턴을 지우세요.
- 입력이 비면 오류 없이 빈 배열이 나와요. 비어 있는 파일을 변환한 줄 알고 넘기지 마세요.
- 반환 변환은 빈 줄을 통째로 빼서 줄 번호가 당겨져요. 오류 난 줄을 셀 때는 빈 줄도 포함해서 세세요.
- 마지막 머리글 칸에 캐리지 리턴이 붙으면 키 이름이 달라져서 매칭이 어긋나요. 머리글 끝을 눈으로 보세요.
- 객체 하나는 변환되지 않고 오류가 나요. 대괄호로 감싸서 배열로 만드세요.
결과를 믿기 전 확인 목록
- 뒤쪽 객체에만 있는 키가 머리글에 들어갔는지 보세요.
- 값에 캐리지 리턴이 섞여 있지 않은지 보세요.
- 입력 칸이 비어 있지 않은지 실행 전에 보세요.
- 빈 줄이 빠져도 줄 번호를 셀 때 포함했는지 보세요.
- 마지막 머리글 칸 끝을 확대해서 눈으로 보세요.
- 단일 객체라면 대괄호로 감쌌는지 넣기 전에 보세요.
- 쉼표와 따옴표가 든 값이 감싸졌는지 결과에서 보세요.
- 되돌린 뒤 행 수가 원본과 같은지 숫자로 보세요.
- 엑셀에서 열기 전에 저장 인코딩을 맞췄는지 보세요.
자주 묻는 질문
쉼표 들어간 값은?
RFC4180 규칙으로 따옴표 처리해 깨지지 않습니다.
한글이 깨지나요?
브라우저 안에서 처리하므로 깨지지 않아요. 다만 엑셀에서 열 때는 UTF-8로 저장해야 안 깨집니다.