JSON의 기본 구조
객체(Object)
중괄호("{}")로 감싸며, 키-값 쌍으로 데이터를 표현한다. 키는 반드시 큰따옴표로 감싼 문자열이어야 한다.
{
"name": "갤럭시 S24",
"price": 1200000,
"in_stock": true
}
배열(Array)
대괄호("[]")로 감싸며, 순서가 있는 값들의 목록을 표현한다.
["빨강", "파랑", "초록"]
[1, 2, 3, 4, 5]
JSON 데이터 타입
JSON은 6가지 데이터 타입을 지원한다. EAV에서 모든 값이 문자열이었던 것과 달리, JSON은 다양한 타입을 네이티브로 지원한다.
문자열(String)
큰따옴표로 감싼다. 작은따옴표는 사용할 수 없다.
{
"product_name": "맥북 프로",
"description": "애플의 프로페셔널 노트북"
}
숫자(Number)
정수와 실수 모두 표현 가능하다. 따옴표 없이 작성한다.
{
"price": 2500000,
"weight": 1.83,
"discount_rate": 0.15
}
불리언(Boolean)
"true" 또는 "false" 값을 가진다. 소문자로 작성하며, 따옴표를 사용하지 않는다.
{
"is_available": true,
"is_discontinued": false
}
null
값이 없음을 나타낸다. 소문자로 작성한다.
{
"nickname": null,
"secondary_phone": null
}
객체(Object)
중첩된 객체를 값으로 가질 수 있다.
{
"product": {
"name": "아이폰 15",
"manufacturer": {
"name": "Apple",
"country": "미국"
}
}
}
배열(Array)
값으로 배열을 가질 수 있으며, 배열 안에는 어떤 타입이든 들어갈 수 있다.
{
"colors": ["블랙", "화이트", "블루"],
"specs": [
{"name": "RAM", "value": 8},
{"name": "Storage", "value": 256}
]
}
실무에서 자주 사용하는 JSON 패턴
상품 속성 표현
{
"screen_size": 6.7,
"storage": 256,
"ram": 8,
"color": "미드나잇",
"5g_support": true,
"release_date": "2026-03-15"
}
다국어 지원
{
"name": {
"ko": "무선 이어폰",
"en": "Wireless Earbuds",
"ja": "ワイヤレスイヤホン"
}
}
옵션과 변형(Variants)
{
"variants": [
{"color": "블랙" , "size": "M", "stock": 50, "sku": "BLK-M-001"},
{"color": "블랙", "size": "L", "stock": 30, "sku": "BLK-L-001"},
{"color": "화이트", "size": "M", "stock": 45, "sku": "WHT-M-001"}
]
}
메타데이터
{
"seo": {
"title": "갤럭시 S24 울트라 - 최저가 구매",
"description": "삼성 갤럭시 S24 울트라를 최저가로 만나보세요"
"keywords": [
"갤럭시",
"S24",
"울트라",
"삼성"
],
},
"analytics": {
"view_count": 15420,
"last_viewed": "2026-01-15T15:30:00Z"
}
}
JSON 작성 시 주의사항
키는 반드시 큰따옴표 사용
// 잘못된 예시 (따옴표 없음)
{name: "상품명"}
// 잘못된 예시 (작은따옴표)
{'name': '상품명'}
// 올바른 예시
{"name": "상품명"}
마지막 요소 뒤에 쉼표 금지
// 잘못된 예시 (trailing comma)
{
"name": "상품",
"price": 10000,
}
// 올바른 예시
{
"name": "상품",
"price": 10000
}
주석 사용 불가
// 잘못된 예시 (주석 포함)
{
"name": "상품",// 상품명
"price": 10000 /* 가격 */
}
// JSON은 주석을 지원하지 않는다
// 올바른 예시
{
"name": "상품",
"price": 10000
}
문자열 안의 특수문자
문자열 안에 큰따옴표나 역슬래시를 넣으려면 이스케이프(\) 처리가 필요하다.
{
"message": "그가 말했다. \"안녕하세요\"",
"path": "C:\\Users\\Documents"
}'데이터 베이스 > 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴' 카테고리의 다른 글
| Ch08. JSON 설계 - JSON 사용하기(2) (0) | 2026.08.01 |
|---|---|
| Ch08. JSON 설계 - JSON 사용하기(1) (0) | 2026.07.31 |
| Ch08. JSON 설계 - EAV의 한계와 JSON 필요성 (0) | 2026.07.29 |
| Ch07. 동적 설계 EAV - EAV의 장단점과 주의사항 (0) | 2026.07.27 |
| Ch07. 동적 설계 EAV - 속성 정의 테이블 (0) | 2026.07.27 |