기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 json 모듈 완전 정복 📝

JSON data icon

파이썬 json 모듈 완전 정복 📝

json 모듈은 JSON 형식 데이터를 Python 객체로 변환하거나, Python 객체를 JSON 문자열 또는 파일로 저장할 때 사용하는 필수 도구입니다.

1. JSON 문자열 ↔ Python 객체

import json

data = '{"name": "철수", "age": 28, "languages": ["Python", "Java"]}'
obj = json.loads(data)
print(obj, type(obj))  # {'name': '철수', 'age': 28, 'languages': ['Python', 'Java']}

s = json.dumps(obj)
print(s, type(s))  # 문자열 타입

2. 들여쓰기·한글 포함 포맷팅

import json

obj = {"name": "영희", "age": 25, "city": "서울"}
pretty = json.dumps(obj, indent=4, ensure_ascii=False)
print(pretty)
# {
#     "name": "영희",
#     "age": 25,
#     "city": "서울"
# }

3. 파일로 JSON 읽고 쓰기

import json

config = {"debug": True, "version": 1.2}
with open('config.json', 'w', encoding='utf-8') as f:
    json.dump(config, f, indent=2, ensure_ascii=False)

with open('config.json', encoding='utf-8') as f:
    loaded = json.load(f)
print(loaded, type(loaded))

4. 예외처리 및 유효성 검증

import json

def safe_load(json_str):
    try:
        return json.loads(json_str)
    except json.JSONDecodeError as e:
        print("파싱 오류:", e)
        return None

print(safe_load('{"bad json": }'))  # None

요약

  • loads, dumps로 문자열 ↔ 객체 변환
  • indentensure_ascii=False로 읽기 좋은 한글 JSON 포맷 생성
  • load, dump로 JSON 파일 입출력
  • JSONDecodeError로 파싱 오류 처리

댓글

가장 많이 본 글

Icons by Flaticon