JSON이란 무엇인가
JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. 프론트엔드와 백엔드 통신, 설정 파일, API 응답에 모두 JSON을 사용합니다. 구조가 명확하고 사람이 읽을 수 있으며 기계가 파싱할 수 있어 현대 개발의 사실상 표준입니다.
JSON 구문 규칙
데이터 유형
- 문자열: 큰따옴표로 감싸기, 예: "hello"
- 숫자: 정수 또는 부동소수점, 예: 42, 3.14
- 불리언: true 또는 false
- 널값: null
- 배열: 대괄호로 감싸기, 예: [1, 2, 3]
- 객체: 중괄호로 감싸기, 키-값 쌍, 예: {"name": "Tom"}
- 중첩: 객체와 배열은 서로 중첩 가능
기본 규칙
- 키는 반드시 큰따옴표 사용(작은따옴표 안 됨)
- 문자열은 반드시 큰따옴표 사용
- 후행 쉼표 불가(마지막 원소 뒤에 쉼표 불가)
- 주석 불가
- 최상위는 객체 또는 배열만 가능
포맷팅의 세 가지 요구
검증
JSON 구문이 올바른지 검사합니다. 쉼표 하나 부족, 쉼표 하나 초과, 따옴표 불일치 모두 파싱 실패를 초래합니다.
미화(Pretty Print)
한 줄로 압축된 JSON을 들여쓰기가 있는 여러 줄 형식으로 펼쳐 사람이 읽기 쉽게 합니다.
압축 형태:
{"name":"Tom","age":20,"tags":["a","b"]}
미화 후:
{
"name": "Tom",
"age": 20,
"tags": ["a", "b"]
}
압축(Minify)
미화 형식에서 모든 공백과 줄바꿈을 제거하고 한 줄로 압축하여 크기를 줄입니다. 전송과 저장에 사용합니다.
흔한 JSON 오류
따옴표 오류
- 작은따옴표 사용: JSON은 큰따옴표만 허용
- 따옴표 닫기 누락
- 키명에 따옴표 누락
오류: {'name': 'Tom'}(작은따옴표) 정상: {"name": "Tom"}
쉼표 오류
- 후행 쉼표: 마지막 원소 뒤에 쉼표가 있음
- 쉼표 누락: 원소 사이에 쉼표 빠짐
오류: {"a": 1, "b": 2,}(후행 쉼표) 정상: {"a": 1, "b": 2}
데이터 유형 오류
- undefined 사용(JSON에는 undefined 없음, null 사용)
- NaN / Infinity 사용(JSON 미지원)
- 함수, Date 객체는 직접 직렬화 불가
이스케이프 오류
문자열 내 특수 문자는 이스케이프해야 합니다:
- 따옴표: "
- 역슬래시: \
- 줄바꿈: \n
- 탭: \t
- 캐리지 리턴: \r
오류: "He said "hello""(따옴표 미이스케이프) 정상: "He said "hello""
인코딩 오류
JSON은 반드시 UTF-8 인코딩을 사용해야 합니다. 다른 인코딩은 한글 깨짐이나 파싱 실패를 초래할 수 있습니다.
중첩과 계층
중첩 예시
{
"user": {
"name": "Tom",
"address": {
"city": "베이징",
"zip": "100000"
}
},
"orders": [
{"id": 1, "items": ["A", "B"]},
{"id": 2, "items": ["C"]}
]
}
들여쓰기
- 2공백 들여쓰기: 가장 많이 사용
- 4공백 들여쓰기: 더 여유로움
- Tab 들여쓰기: 일부 팀 사용
미화 시 들여쓰기 스타일을 통일하세요.
깊은 중첩
5계층 이상 중첩은 읽기 어렵습니다. 구조를 평탄화하거나 분할을 고려하세요.
JSON과 다른 형식
JSON vs JSONL
- JSON: 전체 파일이 하나의 JSON(보통 객체 또는 배열)
- JSONL(JSON Lines): 한 줄에 하나의 독립 JSON, 로그와 스트리밍 데이터에 적합
JSON vs JSON5
JSON5는 JSON의 상위 집합으로 지원합니다:
- 작은따옴표
- 후행 쉼표
- 주석
- 16진수 숫자
하지만 JSON5는 표준 JSON이 아니며 파서 호환성이 제한적입니다.
JSON vs YAML
- JSON: 엄격한 구문, 기계 친화적
- YAML: 느슨한 구문(주석 지원, 들여쓰기로 계층 표시), 사람 친화적
- 설정 파일은 YAML, API 전송은 JSON이 자주 사용됩니다
JSON vs XML
- JSON: 경량, 태그 오버헤드 없음
- XML: 태그가 장황하지만 속성과 네임스페이스 지원
- 현대 개발에서 JSON이 XML을 기본적으로 대체했습니다
실용 팁
JSON 복사
API 응답이나 로그에서 JSON을 복사해 포맷팅 도구에 붙여 넣어 미화하면 읽기 쉽습니다.
JSON 디버깅
인터페이스가 오류를 반환하면 응답 JSON을 포맷팅한 후 필드가 올바른지 검사합니다.
설정 파일
설정 파일을 JSON으로 작성하고 포맷팅 후 각 필드 의미를 주석으로 표시합니다(표준 JSON은 주석 미지원, JSONC나 별도 문서 사용).
데이터 변환
CSV를 JSON으로, XML을 JSON으로 변환하는 등의 시나리오에서 변환 후 포맷팅하여 결과를 검증합니다.
CSV to JSON 도구로 표 형식 데이터를 JSON으로 원클릭 변환하세요.
포맷팅 도구 사용법
검증
JSON을 붙여 넣으면 도구가 구문을 검사합니다. 오류가 있으면 위치와 원인을 알려줍니다.
미화
압축 JSON을 붙여 넣고 들여쓰기를 선택한 뒤 미화를 클릭하면 여러 줄 형식으로 출력됩니다.
압축
미화 JSON을 붙여 넣고 압축을 클릭하면 한 줄로 출력됩니다.
이스케이프
JSON 문자열 내 특수 문자를 이스케이프하거나 역으로 복원합니다.
DocsAll로 JSON 처리
JSON은 인코딩과 변환을 수반하므로 관련 도구를 사용할 수 있습니다:
- 인코딩 디코딩 도구: JSON 문자열 이스케이프 처리
- CSV to JSON 도구: 표를 JSON으로 변환
브라우저에서 처리되며 데이터는 업로드되지 않습니다.
자주 묻는 질문
미화 후 한글이 \uXXXX로 변함
일부 도구는 기본적으로 한글을 이스케이프합니다. 한글 원문을 표시하려면 Unicode 이스케이프 옵션을 끄세요.
큰 JSON이 버벅거림
초대형 JSON(수 MB) 포맷팅 시 버벅거릴 수 있습니다. 명령행 도구(예: jq)로 처리하면 더 효율적입니다.
주석은 어떡하나요
표준 JSON은 주석을 지원하지 않습니다. 주석이 필요하면 JSONC, JSON5 또는 YAML을 사용하세요.
요약
JSON 포맷팅의 핵심은 세 가지입니다: 구문 검증, 가독성 미화, 전송 압축. 흔한 오류는 따옴표, 쉼표, 이스케이프입니다. JSON 처리는 DocsAll 인코딩 디코딩 도구와 CSV to JSON 도구를 사용하며 브라우저에서 실행되어 데이터가 외부로 전송되지 않습니다.