SheepDev

데이터 형식·구조화 데이터

JSON을 CSV 표로 확인하기

사용할 도구

파일이 만들어지면 형식만 바뀐 듯하지만 표·트리, 문자열·숫자, 값·주석은 정보가 다릅니다. 오류 없는 변환이 모든 의미 보존은 아닙니다. 목적 형식 전에 보존할 것을 정하세요.

작은 JSON·CSV 왕복 후 YAML 주석·TOML null 부재를 봅니다. 전체 업무 데이터 전에 선행 0·빈 문자열·누락·중첩이 있는 몇 건으로 변환 계약을 명확히 하세요.

001 보존이 모든 타입 보존은 아닙니다

CSV로 바꿀 JSON
[{"id":"001","quantity":2,"active":true}]

CSV에는 id·quantity·active 열이 생기고 되돌리면 셀은 문자열입니다. 001은 남지만 2·true도 문자열입니다. 외형으로 타입을 추측하지 않으므로 원래 JSON 타입까지 보존하는 왕복은 아닙니다.

되돌린 값
[{"id":"001","quantity":"2","active":"true"}]

숫자처럼 보이는 셀을 전부 변환하면 001이 1로 사라질 수 있습니다. 복원에는 id 문자열·quantity 정수·active 특정 불리언 표기처럼 열별 합의가 필요합니다. CSV만으로 원래 타입을 반드시 복원할 수는 없습니다.

null·빈 문자열·누락이 같은 빈칸이 됩니다

세 가지 값 없음
[
  {"id":"a","note":null},
  {"id":"b","note":""},
  {"id":"c"}
]

CSV note 셀은 모두 비어 되돌려도 null·빈 문자열·누락을 구분하지 못합니다. 상태 열 같은 명시적 규칙이 필요합니다. 빈칸을 모두 null로 바꾸면 다른 두 경우의 뜻도 바뀝니다.

업데이트 API는 누락을 유지, null을 값 삭제로 해석할 수 있습니다. 그렇다면 차이 손실은 중요합니다. 실제 가져오기·API 규칙을 보고 CSV로 보낼 필드를 정하세요. 의미 결정을 변환 버튼에 맡기지 마세요.

중첩을 한 셀에 넣을까 열로 펼칠까

중첩 입력
[{"id":"a","profile":{"city":"Tokyo"}}]

중첩 거부 모드는 변환을 거부합니다. 문자열화는 profile을 JSON 텍스트 한 셀에, 평탄화는 profile.city 열에 넣습니다. 둘 다 표용 표현이지 표 타입으로 중첩을 그대로 보존하는 것은 아닙니다.

역변환은 JSON처럼 보이는 셀을 객체로 파싱하거나 profile.city를 profile 아래로 재구성하지 않습니다. 원래 점이 있는 키도 규칙이 필요합니다. 가역적으로 보인다는 이유보다 수신 형식으로 선택하세요.

쉼표·줄바꿈은 셀 안에도 있습니다

따옴표로 보호한 CSV 셀
id,note
001,"red, blue"
002,"first line
second line"

헤더 제외 두 레코드입니다. 쉼표·줄바꿈으로 단순 분할하면 note 안까지 나눕니다. 표 미리보기에서 red, blue 한 셀·두 줄 note 한 셀인지 보세요. 물리 행 수와 레코드 수는 다를 수 있습니다.

스프레드시트 수식 무력화는 해당 셀 앞에 아포스트로피를 붙여 텍스트를 바꿉니다. 표시 보호와 무손실 교환을 구분하고 적용 여부를 알려 접두사를 원본으로 가져오지 않게 하세요.

YAML 주석은 JSON 값이 되지 않습니다

설명 주석 YAML
# Retry only temporary failures
retries: 3
enabled: true

JSON에는 retries·enabled가 남지만 주석은 없습니다. 값이 변환된다고 설정을 왕복하면 운영 이유·주의를 잃을 수 있습니다. 주석이 중요하면 원본 YAML이나 별도 문서 정책을 유지하세요.

변환 거부가 올바른 결과일 수 있습니다

TOML에는 JSON null 대응값이 없어 포함 JSON을 거부합니다. 빈 문자열·항목 삭제로 출력은 만들 수 있어도 의미가 바뀝니다. 성공만 위해 자동 대체하지 마세요.

큰 정수·날짜도 목적 타입·구현 범위에 달립니다. 현재 JSON→TOML은 정확 범위 밖 정수를 거부합니다. 타입 있는 날짜가 JSON 문자열이 되면 시간·시간대 뜻이 남는지 보세요. 형식 이름만으로 완전 왕복을 약속하지 마세요.

왕복 테스트로 변환 계약 확인

원본·왕복 JSON을 구조 비교해 키 순서보다 타입·null·누락·중첩을 보세요. 차이 자체가 실패는 아니며 의도한 변환은 명세로 남길 수 있습니다. 허용 못 할 손실이면 형식을 바꾸거나 메타데이터를 더하세요.

열 선택·중첩 모드·수식 보호·인코딩도 기록하세요. JSON에서 왔으니 같다는 말보다 보존·변경 정보를 설명하세요. 변환은 전달 한 단계이며 수신 측이 의도대로 읽는지 확인해야 합니다.

전달 전에 빈 필드의 의미를 합의하기

CSV 수신자가 빈 필드를 변경하지 말라는 뜻으로 읽고 송신자는 값을 지우려 했다면 인코딩이나 구문 오류 없이도 결과가 어긋납니다. 표로 바꾸기 전에 빈 문자열, null, 미지정의 의미를 정하세요. 상태 열을 추가하거나 다른 형식을 쓰는 것은 전달 규약의 문제입니다. 유효한 파일 생성과 같은 의미의 해석은 따로 확인해야 합니다.

참고 자료

사용할 도구

가이드 →