새 글을 빠르게 보려면?
이 블로그 목록을 북마크하고 홈·도구 허브의 가이드 영역도 확인하세요. 글 읽기에 가입이나 메일 구독이 필요 없습니다.
Python 표준 라이브러리로 JSON을 안전하게 읽고 쓰며 오류 처리, 숫자 정밀도, 데이터 변환, CLI 디버깅까지 다루는 실무 가이드입니다.
Python 내장 json 모듈은 API 샘플, 설정 파일, 데이터 변환의 대부분을 처리할 수 있습니다. 실무에서는 인코딩, 오류 위치, 숫자 정밀도, 입력 구조를 명확히 다루는 것이 중요합니다.
import json
raw = '{"name": "Ada", "active": true}'
try:
data = json.loads(raw)
except json.JSONDecodeError as exc:
print(f"Invalid JSON: line {exc.lineno}, column {exc.colno}: {exc.msg}")
raise로그에는 줄과 열, 요청 ID만 남기고 비밀 정보가 들어 있는 전체 본문은 기록하지 마세요. 운영 수집 과정에서 입력을 조용히 수정한 뒤 계속 처리하는 것도 피해야 합니다.
import json
from pathlib import Path
source = Path("input.json")
target = Path("output.json")
with source.open("r", encoding="utf-8") as handle:
data = json.load(handle)
with target.open("w", encoding="utf-8") as handle:
json.dump(data, handle, ensure_ascii=False, indent=2)
handle.write("\n")중요한 설정은 임시 파일에 먼저 쓰고 성공한 뒤 대상 파일을 교체하면 중간에 깨진 파일이 남는 위험을 줄일 수 있습니다.
import json
from decimal import Decimal
payload = json.loads('{"amount": 19.99}', parse_float=Decimal)
print(payload["amount"] * 3)Decimal은 기본적으로 JSON 직렬화가 되지 않습니다. 외부 계약이 십진 문자열을 사용하는지, 최소 통화 단위 정수를 사용하는지 결정한 뒤 명시적으로 변환하세요.
def normalize_users(value):
if not isinstance(value, list):
raise ValueError("Root must be an array")
result = []
for index, item in enumerate(value):
if not isinstance(item, dict):
raise ValueError(f"Item {index} must be an object")
if "id" not in item or "email" not in item:
raise ValueError(f"Item {index} is missing id or email")
result.append({
"id": str(item["id"]),
"email": str(item["email"]).strip().lower(),
})
return result복잡한 계약에는 JSON Schema와 유지 관리되는 검증 라이브러리를 사용하세요. 문법 검증과 계약 검증은 서로 다른 문제입니다.
중첩 JSON을 CSV나 데이터베이스 행으로 바꿀 때 배열, 누락, null을 어떻게 표현할지 먼저 정의해야 합니다.
def order_row(order):
customer = order.get("customer") or {}
return {
"order_id": order.get("id"),
"customer_email": customer.get("email"),
"item_count": len(order.get("items") or []),
"status": order.get("status", "unknown"),
}입력과 기대 출력을 테스트로 남기면 변환 결정이 문서화됩니다.
python -m json.tool input.json
python -m json.tool --sort-keys input.json시각적으로 확인하려면 JSON Beautifier 또는 JSON Tree Viewer를 사용할 수 있습니다. 불필요한 비밀 정보는 먼저 제거하세요.
null을 구분합니다.Decimal, 문자열, 최소 단위 정수로 처리합니다.전체 옵션은 Python 공식 json 문서에서 확인할 수 있습니다. 표준 라이브러리로 시작하고 계약에 필요할 때 Schema 검증을 추가하세요.
개발자에게 최고의 JSON 처리 도구를 제공하는 데 전념
더 많은 게시물이 곧 출시됩니다...
블로그로 돌아가기업데이트 확인 방법, 다루는 주제, 제안 방법입니다.
이 블로그 목록을 북마크하고 홈·도구 허브의 가이드 영역도 확인하세요. 글 읽기에 가입이나 메일 구독이 필요 없습니다.
JSON 검증, 포맷, 변환, 디버깅 흐름과 JSON Work 업데이트이며, 사이트의 무료 브라우저 도구와 맞물립니다.
가능합니다. About 페이지나 GitHub로 연락 주세요. 실제 연동·디버깅에 도움이 되는 주제를 우선합니다.