JSON
기본 정보
- 명칭: JSON
- 영문명: JavaScript Object Notation
- 한글명: 자바스크립트 객체 표기법
- 분류: 데이터 교환 포맷
- 최초 공개: 2001년
- 주요 용도: API 통신, 데이터 저장, 설정 파일
- 관련 주제: #JSON #API #JavaScript #RESTAPI #데이터포맷
개요
JSON은 데이터를 저장하고 시스템 간에 교환하기 위한 경량 데이터 포맷이다.
원래 JavaScript 객체 문법에서 시작되었지만 현재는 Java, PHP, Python, C#, Go 등 거의 모든 프로그래밍 언어에서 지원한다.
현대 웹 개발에서는 REST API의 사실상 표준 데이터 형식으로 사용되고 있다.
JSON 구조
Key
↓
Value
↓
Object
↓
Array
기본 문법
객체(Object)
{
"name": "구름",
"age": 30
}
Key와 Value 형태로 구성된다.
배열(Array)
[
"PHP",
"JavaScript",
"Python"
]
객체 + 배열
{
"name": "구름",
"skills": [
"PHP",
"JavaScript",
"Python"
]
}
실무에서 가장 흔한 형태이다.
지원 데이터 타입
| 타입 | 예시 |
|---|---|
| String | "구름" |
| Number | 30 |
| Boolean | true |
| Null | null |
| Object | {} |
| Array | [] |
JSON 예제
회원 정보
{
"id": 1,
"name": "구름",
"email": "cloud@example.com"
}
게시글
{
"title": "안녕하세요",
"content": "첫 글입니다."
}
상품 정보
{
"name": "노트북",
"price": 1500000,
"stock": 10
}
JSON과 JavaScript 객체 차이
JavaScript 객체
const user = {
name:"구름",
age:30
};
JSON
{
"name": "구름",
"age": 30
}
차이점
- JSON은 Key를 반드시 따옴표로 감싼다.
- JSON은 함수(Function)를 포함할 수 없다.
JSON.parse()
문자열 → 객체 변환
const json =
'{"name":"구름"}';
const obj =
JSON.parse(json);
JSON.stringify()
객체 → 문자열 변환
const obj = {
name:"구름"
};
JSON.stringify(obj);
API 응답 예시
{
"success": true,
"message": "조회 성공",
"data": {
"name": "구름"
}
}
실무에서 가장 흔한 형태이다.
REST API와 관계
Client
↓
REST API
↓
JSON
↓
Client
현재 대부분의 REST API는 JSON을 사용한다.
AJAX 응답
fetch("/api/user")
.then(res=>res.json())
.then(data=>{
});
Fetch API와 함께 자주 사용된다.
JSON 파일
예시
{
"db_host": "localhost",
"db_name": "mydb"
}
파일명
config.json
package.json
Node.js 프로젝트 설정 파일
{
"name": "project",
"version": "1.0.0"
}
tsconfig.json
TypeScript 설정 파일
{
"compilerOptions": {
"strict": true
}
}
JSON과 XML 비교
XML
<user>
<name>구름</name>
</user>
JSON
{
"name": "구름"
}
| JSON | XML |
|---|---|
| 가볍다 | 무겁다 |
| 가독성 높음 | 태그가 많음 |
| API 표준 | 레거시 시스템 |
| 처리 속도 빠름 | 비교적 느림 |
JSON 장점
- 가볍다
- 읽기 쉽다
- API 표준
- 언어 독립적
- 처리 속도가 빠르다
- 구조가 단순하다
JSON 단점
- 주석 지원 안 함
- 복잡한 스키마 검증 부족
- 함수 저장 불가
- 순환 참조 불가
대표 활용 분야
- REST API
- AJAX
- SPA
- 모바일 앱
- 설정 파일
- AI API
- 클라우드 서비스
- 데이터 교환
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- API 응답 형식 통일
- camelCase 또는 snake_case 규칙 통일
- null 처리 기준 정의
- 날짜 형식 ISO8601 사용
- JSON Schema 검증 고려
- 불필요한 데이터 제거
- 응답 크기 최소화
- API 버전 관리 적용
- 보안 정보 제외
- UTF-8 인코딩 사용
JSON과 함께 사용하는 기술
대표 활용 사례
- OpenAI API 응답
- GitHub API 응답
- React 데이터 통신
- Vue.js 데이터 통신
- 모바일 앱 서버 통신
- Node.js 설정 파일
- Docker Compose 일부 설정
- SaaS API
관련 문서
출처
- JSON 공식 사이트
- MDN Web Docs - JSON
- RFC 8259 (JSON Data Interchange Format)
메모
- JSON Schema 문서 작성 권장
- API 응답 설계 문서 작성 가능
- JSON과 XML 비교 심화 문서 작성 가능
- OpenAPI(Swagger) 문서 작성 가능
- JSON 파싱 최적화 문서 작성 가능
- REST API, Fetch API, JavaScript와 상호 링크 추천