JSON
기본 정보
- 이름: JSON
- 영문명: JavaScript Object Notation
- 분류: 데이터 교환 형식(Data Interchange Format)
- 최초 공개: 2001년
- 표준: RFC 8259
- 주요 용도: API 통신, 설정 파일, 데이터 저장 및 전송
- 관련 주제: #JSON #API #REST #데이터포맷
개요
JSON(JavaScript Object Notation)은 사람이 읽기 쉽고 컴퓨터가 쉽게 처리할 수 있는 경량 데이터 교환 형식이다.
JavaScript 객체 표기법에서 유래했지만, 현재는 Java, PHP, Python, C#, Go, Node.js 등 거의 모든 프로그래밍 언어에서 지원하는 표준 데이터 형식으로 사용된다.
REST API와 모바일 앱, 웹 서비스 간 데이터 통신에서 가장 많이 사용되는 형식이다.
주요 특징
- 텍스트 기반
- 사람이 읽기 쉬움
- 구조가 단순함
- 언어 독립적
- 데이터 전송에 최적화
- 대부분의 언어에서 지원
기본 구조
{
"name": "구름",
"age": 30,
"admin": true
}
JSON은 Key : Value 형태로 데이터를 표현한다.
데이터 타입
| 타입 | 예시 |
|---|---|
| String | "홍길동" |
| Number | 100, 3.14 |
| Boolean | true, false |
| Object | {} |
| Array | [] |
| Null | null |
객체(Object)
{
"name": "홍길동",
"age": 30,
"city": "서울"
}
중괄호 {}로 표현한다.
배열(Array)
[
"Apple",
"Banana",
"Orange"
]
대괄호 []로 표현한다.
객체 배열
[
{
"id": 1,
"name": "홍길동"
},
{
"id": 2,
"name": "김철수"
}
]
API에서 가장 많이 사용하는 형태이다.
중첩 객체
{
"user": {
"name": "구름",
"age": 30
}
}
객체 안에 객체를 포함할 수 있다.
중첩 배열
{
"items": [
{
"title": "노트북"
},
{
"title": "마우스"
}
]
}
실제 쇼핑몰 API에서 자주 사용하는 구조이다.
JSON 규칙
- Key는 반드시 큰따옴표(
") 사용 - 문자열은 큰따옴표 사용
- 마지막 요소 뒤에 쉼표(
,) 사용 불가 - 주석(
//,/* */) 지원하지 않음 - UTF-8 사용 권장
JavaScript
객체 → JSON
const json = JSON.stringify(user);
JSON → 객체
const obj = JSON.parse(json);
PHP
배열 → JSON
echo json_encode($data);
JSON → 배열
$data = json_decode($json, true);
Python
객체 → JSON
import json
json.dumps(data)
JSON → 객체
json.loads(text)
Java
ObjectMapper mapper =
new ObjectMapper();
Jackson 라이브러리를 많이 사용한다.
C#
JsonSerializer.Serialize(obj);
JsonSerializer.Deserialize<User>(json);
REST API 예시
응답(Response)
{
"success": true,
"message": "정상 처리",
"data": {
"id": 1,
"name": "구름"
}
}
게시판 API 예시
{
"wr_id": 100,
"subject": "공지사항",
"writer": "관리자",
"created_at": "2026-06-18"
}
쇼핑몰 API 예시
{
"product_id": 1,
"name": "노트북",
"price": 1500000,
"stock": 20
}
장점
- 가독성이 좋음
- 데이터 크기가 작음
- 언어 독립적
- API 표준으로 널리 사용됨
- 파싱 속도가 빠름
- 구조가 단순함
단점
- 주석 지원 안 함
- 날짜 타입이 없음
- 매우 큰 데이터에서는 XML보다 표현력이 제한될 수 있음
- 중복 Key 사용 시 문제가 발생할 수 있음
XML과 비교
| JSON | XML |
|---|---|
| 문법이 간결 | 태그 기반 |
| 데이터 크기가 작음 | 상대적으로 큼 |
| 파싱 속도가 빠름 | 비교적 느림 |
| API에서 많이 사용 | 레거시 시스템에서 사용 |
| 가독성이 높음 | 구조 표현력이 풍부 |
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
snake_case또는camelCase규칙 통일- 응답 구조 표준화 (
success,message,data) - UTF-8 사용
- 불필요한 데이터 제외
- 날짜는 ISO 8601 형식 사용
- Null 값 처리 정책 정의
- API 버전 관리(
/api/v1) - Swagger(OpenAPI) 문서 작성
- 민감한 정보는 응답에 포함하지 않음
- JSON Schema 검증 활용
JSON과 함께 사용하는 기술
대표 활용 분야
- REST API
- 모바일 앱
- 웹 서비스
- 설정 파일
- AI API
- 클라우드 서비스
- 데이터 교환
- NoSQL 데이터 저장
관련 문서
출처
- JSON 공식 홈페이지
- RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format
- ECMA-404 JSON 표준