JSON(제이슨, JavaScript Object Notation)은 컴퓨터 세상의 공용어라고 생각하면 가장 쉬워요.
사람들이 서로 다른 언어를 쓰면 소통이 어렵잖아요? 그래서 '영어'라는 공용어를 사용하죠. 컴퓨터 프로그램들도 각자 데이터를 저장하고 이해하는 방식(언어)이 달라요. A 프로그램이 B 프로그램에게 정보를 전달할 때, 서로 알아들을 수 있는 약속된 형식이 필요한데, 그중 가장 널리 쓰이는 것이 바로 JSON입니다.
핵심 요약:
- **데이터를 표현하는 약속된 형식(포맷)**입니다.
- 사람이 눈으로 읽고 이해하기 쉽습니다.
- 컴퓨터(기계)도 쉽게 분석하고 만들 수 있습니다.
- 특정 프로그래밍 언어에 얽매이지 않아서, Python, Java, JavaScript 등 거의 모든 언어에서 사용할 수 있습니다.
📝 JSON은 어떻게 생겼나요? (생성 규칙)
JSON은 딱 두 가지 기본 구조로 모든 것을 표현합니다.
1. Key-Value (키-값) 쌍
가장 중요한 규칙이에요. 마치 국어사전에서 '단어'와 '뜻'이 짝을 이루는 것과 같습니다.
- Key(키): 데이터의 이름표. 반드시 **큰따옴표(")**로 감싸야 합니다.
- Value(값): 실제 데이터.
JSON
"이름": "홍길동"
위 예시에서 "이름"이 Key, "홍길동"이 Value입니다. 이 둘을 콜론(:)으로 연결하죠.
2. 데이터의 종류 (Value가 될 수 있는 것들)
Value 자리에는 다음과 같은 다양한 종류의 데이터를 넣을 수 있어요.
- 문자열(String): 글자들. 큰따옴표(")로 감쌉니다.
- "안녕하세요", "서울시"
- 숫자(Number): 따옴표 없이 그냥 씁니다.
- 25, 180.5
- 참/거짓(Boolean): true 또는 false 둘 중 하나입니다. (따옴표 없음)
- 객체(Object): 여러 개의 Key-Value 쌍을 **중괄호({ })**로 묶은 것. 데이터 덩어리를 표현할 때 사용합니다.
JSON
{
"이름": "홍길동",
"나이": 30,
"사는곳": "서울"
} - 배열(Array): 여러 개의 값을 순서대로 **대괄호([ ])**로 묶은 것. 목록을 표현할 때 사용합니다.
JSON
[ "게임", "독서", "영화보기" ] - null: 값이 없음을 나타냅니다. (따옴표 없음)
종합 예시
이 규칙들을 조합하면 아래와 같이 복잡한 정보도 깔끔하게 표현할 수 있습니다.
JSON
{
"이름": "김코딩",
"나이": 28,
"프로그래머": true,
"수강과목": [ "웹 개발", "알고리즘", "데이터베이스" ],
"연락처": {
"이메일": "coding.kim@example.com",
"휴대폰": null
}
}
🚀 JSON 데이터는 어떻게 보내지나요? (변환과 전송)
프로그램 속 데이터(예: Python의 딕셔너리)를 다른 프로그램으로 보내려면, 여행용 가방에 짐을 싸는 과정이 필요해요.
- 직렬화 (Serialization): 짐 싸기
- 프로그램이 사용하는 데이터 구조(객체, 배열 등)를 JSON 규칙에 맞는 **하나의 긴 텍스트(문자열)**로 변환하는 과정입니다.
- 이렇게 텍스트로 변환해야 네트워크를 통해 쉽게 전송할 수 있습니다. 마치 옷, 책, 세면도구를 캐리어(텍스트)에 차곡차곡 담는 것과 같아요.
- 전송 (Transmission)
- 변환된 JSON 텍스트를 인터넷을 통해 다른 컴퓨터나 서버로 보냅니다.
- 역직렬화 (Deserialization): 짐 풀기
- 전송받은 JSON 텍스트를 다시 프로그램이 이해할 수 있는 데이터 구조(객체, 배열 등)로 풀어주는 과정입니다.
- 목적지에 도착해서 캐리어를 열고 옷, 책 등을 꺼내 정리하는 것과 같습니다.
이 과정을 통해 서로 다른 환경에서 개발된 프로그램들이라도 JSON이라는 공통된 '짐 싸기/풀기' 규칙 덕분에 원활하게 데이터를 주고받을 수 있습니다.
🐍 파이썬(Python)에서 JSON 사용하기
파이썬은 json이라는 아주 편리한 기본 라이브러리를 제공해서 JSON을 쉽게 다룰 수 있습니다.
1. Python 데이터 → JSON 텍스트로 변환 (직렬화)
파이썬의 딕셔너리(dict)나 리스트(list)를 JSON 문자열로 만들 때는 json.dumps() 함수를 사용합니다. 'dumps'는 'dump string'의 약자)
Python
import json
# 파이썬 딕셔너리 데이터
person_data = {
"name": "이파이",
"age": 25,
"is_student": True,
"courses": ["Python", "Data Science"]
}
# 딕셔너리를 JSON 문자열로 변환 (직렬화)
# ensure_ascii=False 옵션은 한글이 깨지지 않고 그대로 보이게 해줍니다. (중요!)
json_string = json.dumps(person_data, ensure_ascii=False, indent=2)
print("--- JSON 문자열 (전송용 텍스트) ---")
print(json_string)
실행 결과:
--- JSON 문자열 (전송용 텍스트) ---
{
"name": "이파이",
"age": 25,
"is_student": true,
"courses": [
"Python",
"Data Science"
]
}
- indent=2 옵션은 보기 좋게 2칸씩 들여쓰기를 해줍니다.
- 파이썬의 True는 JSON의 true로, None은 null로 자동으로 바뀝니다.
2. JSON 텍스트 → Python 데이터로 변환 (역직렬화)
반대로, JSON 형식의 문자열을 받아서 파이썬이 쓸 수 있는 딕셔너리나 리스트로 만들 때는 json.loads() 함수를 사용합니다. ('loads'는 'load string'의 약자)
Python
import json
# 다른 곳에서 받았다고 가정한 JSON 문자열
received_json_string = """
{
"product_name": "스마트폰",
"price": 1200000,
"in_stock": true
}
"""
# JSON 문자열을 파이썬 딕셔너리로 변환 (역직렬화)
product_data = json.loads(received_json_string)
print("--- 파이썬 딕셔너리 ---")
print(product_data)
# 이제 파이썬 딕셔너리처럼 자유롭게 사용할 수 있습니다.
print("\n제품명:", product_data["product_name"])
print("가격:", product_data["price"])
실행 결과:
--- 파이썬 딕셔너리 ---
{'product_name': '스마트폰', 'price': 1200000, 'in_stock': True}
제품명: 스마트폰
가격: 1200000
- JSON의 {"key": "value"} 객체는 파이썬의 딕셔너리로, ["a", "b"] 배열은 리스트로 자동으로 변환됩니다.
JSON은 현대 웹 개발과 데이터 통신의 기본 중의 기본입니다. 이 개념만 잘 이해해 두시면 앞으로 어떤 프로그래밍을 하시든 큰 도움이 될 거예요!
'정 보 교 환' 카테고리의 다른 글
| 2026년 NVMe vs SATA SSD 완벽 비교 🔥 속도 차이, 체감 성능, 무엇을 사야 할까? (0) | 2026.02.24 |
|---|---|
| [리눅스]lscpu 명령어 (0) | 2025.10.10 |
| Python 다운로드 & 설치 가이드 🐍 (0) | 2025.10.02 |
| 엔트리 서버의 핵심! Intel Xeon E 프로세서 (0) | 2025.09.30 |
| 서버 CPU 선택 가이드: Lenovo ThinkSystem SR650 V2 / V3 / V4 Xeon Scalable 비교 (0) | 2025.09.29 |