JSON은 JavaScript Object Notation의 약자로, 데이터를 저장하거나 교환하기 위해 사용하는 가벼운 데이터 형식이다.
기본적으로 Key-Value Pair로 데이터를 표현하며, 사람과 컴퓨터 모두 읽고 쓰기 쉽도록 설계되었다.
이는 데이터를 중첩된 구조로 정리할 수 있다는 의미이다. 하나의 데이터 안에 또 다른 데이터(객체나 배열)를 포함시켜서 상하 관계 또는 포함 관계를 표현할 수 있다.
계층적 구조를 생각할 때 나무를 떠올리면 이해하기 쉽다.
(1) 단순한 데이터 (평면적인 구조)
{
"name": "홍길동",
"age": 25,
"city": "서울"
}
(2) 계층적 데이터 (중첩된 구조)
{
"name": "홍길동",
"age": 25,
"address": {
"city": "서울",
"district": "강남구",
"street": "테헤란로"
},
"hobbies": ["축구", "독서"]
}
address안에 또 다른 객체가 있다. 이 객체는 city, district, street 정보를 가진다.hobbies는 배열로 취미 리스트를 가진다.address 객체는 모든 주소 정보를 한곳에 모아둔 데이터이다.{
"storeName": "Tech Shop",
"products": [
{
"name": "Laptop",
"price": 1200,
"specs": {
"brand": "Lenovo",
"processor": "Intel i7",
"ram": "16GB"
}
},
{
"name": "Smartphone",
"price": 800,
"specs": {
"brand": "Samsung",
"processor": "Exynos",
"ram": "8GB"
}
}
]
}
product는 배열로, 여러 상품 데이터를 포함한다.Laptop, Smartphone)은 객체로 표현되며, 각 상품마다 다른 속성 (이름, 가격, 스펙 등)을 가진다.specs는 중첩된 객체로, 상품의 상세 사양을 지정한다.specs에 추가로 weight, battery 같은 속성을 더해도 구조가 깨지지 않음.) 프로그래밍 언어에서 이런 계층적 구조를 탐색하고 가공하는 작업을 쉽게 처리할 수 있다.
import json
# JSON 데이터
json_data = '''
{
"name": "홍길동",
"address": {
"city": "서울",
"district": "강남구"
},
"hobbies": ["축구", "독서"]
}
'''
# JSON 문자열을 Python 객체로 변환
data = json.loads(json_data)
# 계층적 데이터 접근
print(data["name"]) # 홍길동
print(data["address"]["city"]) # 서울
print(data["hobbies"][0]) # 축구
JSON 데이터는 객체와 배열 이 두가지 요소로 이루어진다.
{}로 묶이며 키와 값으로 데이터를 저장한다.{
"key": "value"
}
[]로 묶이며, 데이터의 순서 있는 리스트를 표현한다.[
"value1",
"value2",
"value3"
]
""로 감싼 텍스트true or falseJSON은 웹 애플리케이션에서 클라이언트와 서버 간 데이터 교환 시 사용
(ex. 브라우저가 서버로부터 사용자 정보를 JSON 형태로 받아온다.)
{
"userId": 12345,
"username": "john_doe",
"email": "john.doe@example.com"
}
모바일 앱에서 서버와 데이터를 주고받을 때 사용
(ex. 유튜브 앱에서 동영상 목록을 JSON 형태로 요청/응답)
[
{
"title": "JSON Tutorial",
"views": 1500,
"duration": "10:32"
},
{
"title": "Understanding APIs",
"views": 2400,
"duration": "12:45"
}
]
JSON은 간단한 설정 파일이나 로컬 데이터 저장소로 사용
(ex. 앱 설정 파일 [config.json])
{
"theme": "dark",
"language": "ko",
"notifications": true
}
