데이터 베이스/설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴

Ch08. JSON 설계 - JSON 문법

webmaster 2026. 7. 29. 23:03

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"
}