JSON은 데이터 분석이나 API 연동에서 가장 먼저 마주치는 데이터 형식이다.
핵심은 하나다. JSON은 대부분 문자열로 들어오기 때문에 바로 key 접근이 불가능하고, json.loads()로 파싱해야 실제 데이터(dict/list)로 사용할 수 있다.
JSON은 “데이터”가 아니라 “문자열 형식”이다
JSON은 데이터를 담고 있지만, 파이썬 입장에서는 그냥 문자열이다.
json_str = '{"name": "Alice", "age": 25}'
이 상태에서는 dict처럼 보이지만 실제로는 str이다.
type(json_str)
# <class 'str'>
그래서 아래처럼 접근하면 실패한다.
json_str["name"] # ❌
→ key 접근이 아니라 문자열 인덱싱이기 때문
json.loads()로 “데이터 구조”로 바꿔야 한다
이 문제를 해결하는 게 json.loads()다.
import json
json_str = '{"name": "Alice", "age": 25}'
data = json.loads(json_str)
print(data["name"]) # Alice
이제야 dict처럼 동작한다.
type(data)
# <class 'dict'>
즉,
- JSON 문자열 → json.loads() → dict/list
이 변환이 핵심이다.
JSON 구조는 dict + list 조합이다
JSON은 단순한 key-value가 아니라 중첩 구조다.
대표 구조는 2가지다:
- {} → dict
- [] → list
이 둘이 섞여서 만들어진다.
실제 JSON 구조 예시
import json
json_str = '''
{
"movie": {
"title": "Inception",
"actors": [
{"name": "Leonardo"},
{"name": "Joseph"}
]
}
}
'''
data = json.loads(json_str)
중첩 JSON 접근 방식
이 구조를 꺼내는 방식은 항상 동일하다.
data["movie"]["actors"][0]["name"]
접근 순서:
- dict → "movie"
- dict → "actors"
- list → [0]
- dict → "name"
👉 핵심 패턴:
key → key → index → key
왜 JSON을 이렇게 이해해야 하는가
이 개념이 중요한 이유는 API 데이터 구조 때문이다.
실제 API 응답은 대부분 이런 형태다:
{
"response": {
"items": [
{...},
{...},
{...}
]
}
}
여기서 원하는 값은 보통 이렇게 뽑는다:
data["response"]["items"][0]["필드명"]
즉, JSON을 이해하지 못하면
API 데이터를 꺼내는 단계에서 막힌다.
JSON → DataFrame으로 이어지는 구조
JSON을 다루는 목적은 결국 이거다.
👉 DataFrame으로 변환하기
예시:
import pandas as pd
items = data["response"]["items"]
df = pd.DataFrame(items)
print(df)
이 흐름이 데이터 분석 기본 루트다.
API → JSON 문자열 → json.loads() → dict/list → DataFrame
구현 관점 핵심 포인트
1. JSON은 무조건 문자열로 들어온다
API 응답은 대부분 str이다.
2. json.loads()는 필수 단계다
이거 없이 데이터 접근 불가능하다.
3. 구조 확인이 먼저다
print(data)
이걸 안 보면 접근 못 한다.
4. 접근은 항상 단계적으로 한다
data["a"]["b"][0]["c"]
5. 목적은 DataFrame 변환이다
JSON은 중간 단계일 뿐이다.
자주 하는 실수
❌ 바로 key 접근
json_str["key"]
❌ 구조 확인 안 하고 접근
data["items"] # 구조 다르면 바로 에러
한 줄 정리
JSON은 문자열이기 때문에 json.loads()로 dict/list 구조로 변환해야 실제 데이터처럼 접근할 수 있다.
'Data Analytics > 수집·크롤링' 카테고리의 다른 글
| BeautifulSoup XML 파싱 정리 | find와 find_all 차이부터 영화 정보 추출까지 (0) | 2026.05.08 |
|---|---|
| JSON과 XML 차이 정리 | API 응답 포맷에 따라 파이썬 처리 방식이 달라지는 이유 (0) | 2026.05.07 |
| requests.get 정리 | params로 API URL 깔끔하게 보내는 방법 (0) | 2026.05.07 |
| JSON 데이터를 Pandas DataFrame으로 바꾸는 방법 | 리스트와 딕셔너리 구조 정리 (0) | 2026.05.06 |
| 파이썬 API 데이터 수집 정리 | urllib와 json으로 JSON 응답 받아 DataFrame 만들기 (0) | 2026.05.06 |
