반응형
JSON(제이슨, JavaScript Object Notation)은 가볍고 읽기 쉬운 데이터 교환 형식입니다.
주로 서버와 클라이언트 간 데이터를 전송하거나 저장할 때 사용됩니다.
JavaScript에서 파생되었지만, 현재는 대부분의 프로그래밍 언어에서 지원됩니다.
JSON의 특징
- 텍스트 기반
- 사람이 읽기 쉽고 이해하기 쉬운 구조.
- UTF-8 인코딩을 기본으로 사용.
- 키-값 쌍 구조
- 데이터는 "키(key)"와 "값(value)" 쌍으로 이루어짐.
- 경량 데이터 포맷
- XML보다 간결하며 데이터 전송 속도가 빠름.
- 언어 독립적
- 다양한 언어에서 쉽게 사용 가능(JavaScript, Python, Java 등).
JSON 데이터 구조
1. 기본 형식
- JSON은 두 가지 주요 구조를 가집니다:
- 객체(Object): 중괄호 {}로 묶인 키-값 쌍의 집합.
- 배열(Array): 대괄호 []로 묶인 값의 리스트.
2. 데이터 유형
JSON에서 지원하는 데이터 유형은 다음과 같습니다:
| 데이터 유형 | 예시 |
|----------------|-------------------------------------|
| 문자열 | "hello" |
| 숫자 | 123, 45.67 |
| 불리언 | true, false |
| 객체 | {"key": "value"} |
| 배열 | ["apple", "banana", "cherry"] |
| null | null |
JSON 예제
1. 객체
{
"name": "John Doe",
"age": 30,
"isStudent": false
}
2. 배열
[
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 27}
]
3. 복합 구조
{
"team": "Developers",
"members": [
{"name": "Alice", "role": "Frontend"},
{"name": "Bob", "role": "Backend"}
],
"active": true
}
JSON 사용 사례
- 웹 애플리케이션 데이터 전송
- 클라이언트와 서버 간 요청/응답 데이터 교환.
예: REST API 응답 데이터
{ "status": "success", "data": {"id": 1, "name": "John"} }
- 클라이언트와 서버 간 요청/응답 데이터 교환.
- 구성 파일(Configuration Files)
- 애플리케이션 설정 정보를 저장.
{ "appName": "MyApp", "version": "1.0.0", "debug": true }
- 데이터 저장
- 데이터베이스에 JSON 데이터를 저장하거나 로깅에 활용.
- 데이터 교환
- 모바일, IoT 기기, 서버 등 다양한 환경에서 데이터를 주고받는 데 사용.
JSON과 다른 포맷 비교
특징JSONXMLYAML
가독성 | 좋음 | 복잡 | 더 좋음 |
데이터 크기 | 작음 | 큼 | 중간 |
구조화 | 간단한 키-값 | 태그 기반 | 들여쓰기 기반 |
사용성 | REST API, 웹 애플리케이션 | 복잡한 구조 필요 시 | 설정 파일, 간단한 데이터 저장 |
JSON을 사용하는 프로그래밍 예시
Python
import json
# JSON 문자열
json_data = '{"name": "John", "age": 30, "isStudent": false}'
# JSON 파싱
data = json.loads(json_data)
print(data["name"]) # 출력: John
# 객체를 JSON으로 변환
new_data = {"name": "Alice", "age": 25}
json_string = json.dumps(new_data, indent=2)
print(json_string)
JavaScript
// JSON 문자열
const jsonData = '{"name": "John", "age": 30, "isStudent": false}';
// JSON 파싱
const data = JSON.parse(jsonData);
console.log(data.name); // 출력: John
// 객체를 JSON으로 변환
const newData = { name: "Alice", age: 25 };
const jsonString = JSON.stringify(newData, null, 2);
console.log(jsonString);
JSON의 한계와 주의점
- 스키마 부족
- 데이터 구조를 검증하는 스키마가 기본적으로 없음(추가 도구 필요).
- 큰 데이터 처리
- 대량의 데이터를 처리할 때 속도가 느려질 수 있음.
- 타입 제한
- JSON은 날짜, 이진 데이터 등을 기본적으로 지원하지 않음(문자열로 처리).
JSON은 단순하면서도 강력한 데이터 포맷으로, 웹 개발 및 다양한 환경에서 필수적으로 사용됩니다. 활용하려는 환경에 따라 JSON의 특징을 잘 이해하고 최적화된 방식으로 사용하는 것이 중요합니다.
반응형