JSON 이해하기: 개발자를 위한 완벽 가이드
JSON 형식에 대한 심층 분석, 역사, 고급 사용 패턴 및 현대 개발을 위한 모범 사례를 알아봅니다.
JSON(JavaScript Object Notation)은 웹에서 데이터 교환의 공통 언어가 되었습니다. 원래 JavaScript에서 파생되었지만, 기원을 초월하여 거의 모든 프로그래밍 언어와 플랫폼에서 가장 널리 사용되는 데이터 형식이 되었습니다.
JSON의 역사
JSON은 2000년대 초반 Douglas Crockford에 의해 처음 명세되었습니다. JavaScript에서 파생되었음에도 불구하고, JSON은 언어 독립적 형식입니다. 2013년 ECMA-404로, 이후 2017년 RFC 8259로 표준화되었습니다. JSON 이전에는 XML이 주요 데이터 교환 형식이었지만, JSON의 단순성과 가독성 덕분에 빠르게 선호되는 선택이 되었습니다.
JSON 데이터 타입 상세
문자열
JSON의 문자열은 큰따옴표로 묶어야 합니다. 유니코드 문자와 이스케이프 시퀀스를 지원합니다:
{
"greeting": "안녕하세요!",
"unicode": "\u0048\u0065\u006C\u006C\u006F",
"escaped": "1줄\n2줄\t탭"
}
숫자
JSON 숫자는 정수 또는 부동소수점이 될 수 있습니다. 과학적 표기법도 지원됩니다:
{
"integer": 42,
"negative": -17,
"float": 3.14159,
"scientific": 2.998e8
}
객체와 배열
객체는 키-값 쌍의 비정렬 컬렉션입니다. 배열은 정렬된 목록입니다:
{
"users": [
{"name": "Alice", "role": "admin"},
{"name": "Bob", "role": "user"}
]
}
고급 JSON 패턴
JSON Schema
JSON Schema는 JSON 문서를 주석 달고 검증하기 위한 어휘입니다:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {"type": "string", "minLength": 1},
"age": {"type": "integer", "minimum": 0}
},
"required": ["name"]
}
JSON Patch (RFC 6902)
JSON Patch는 JSON 문서의 변경 사항을 설명하는 형식을 정의합니다:
[
{"op": "add", "path": "/email", "value": "[email protected]"},
{"op": "replace", "path": "/name", "value": "Alice Smith"},
{"op": "remove", "path": "/temporary"}
]
성능 고려사항
- 파싱 속도: JSON 파싱은 더 단순한 구조로 인해 일반적으로 XML 파싱보다 빠릅니다
- 파일 크기: JSON은 일반적으로 동등한 XML보다 30-50% 작습니다
- 스트리밍: 대규모 데이터셋의 경우 JSON Lines(JSONL) 형식을 고려하세요
- 압축: JSON은 gzip으로 잘 압축되어 크기를 70-90% 줄일 수 있습니다
일반적인 함정
1. 주석 불가: JavaScript와 달리 JSON은 주석을 지원하지 않습니다
2. 후행 쉼표 불가: 객체나 배열의 마지막 요소에 후행 쉼표가 없어야 합니다
3. 키는 문자열이어야 함: JSON 키는 따옴표로 묶인 문자열이어야 합니다
4. undefined 없음: JSON에는 null은 있지만 undefined는 없습니다
5. 날짜 처리: JSON에는 네이티브 날짜 타입이 없습니다; 날짜는 일반적으로 ISO 8601 문자열로 저장됩니다
현대 개발에서의 JSON
JSON은 현대 개발의 모든 곳에서 사용됩니다:
- REST API: 요청 및 응답 본문의 표준 형식
- 설정 파일: package.json, tsconfig.json 등
- NoSQL 데이터베이스: MongoDB는 BSON(Binary JSON)으로 데이터를 저장합니다
- WebSocket: 실시간 통신에서 JSON 메시지를 자주 사용합니다
- GraphQL: 응답은 항상 JSON 형식입니다
JSON Formatter 도구를 사용하여 JSON 데이터를 즉시 검증, 포맷, 압축하세요.