TypeError: Object of type ...is not JSON serializable 에러 발생 이유와 해결 방법
웹 개발을 하다 보면 JSON 형식으로 데이터를 주고받는 경우가 많습니다. 그러나 가끔씩 TypeError: Object of type ... is not JSON serializable 오류가 발생할 수 있습니다. 이 블로그에서는 이 오류가 발생하는 이유와 이를 해결하는 방법을 실습 예제와 함께 설명하겠습니다.
1. 오류 발생 이유
이 오류는 JSON 인코딩을 시도할 때 특정 객체 타입이 JSON으로 직렬화(serialize)할 수 없을 때 발생합니다. JSON은 문자열, 숫자, 배열, 불리언, null 등의 기본 데이터 타입만을 직렬화할 수 있습니다. 따라서, 사용자 정의 객체나 복잡한 데이터 타입을 JSON으로 변환할 수 없습니다.
오류 발생 예제
import json
from datetime import datetime
data = {
"name": "Alice",
"timestamp": datetime.now()
}
json_data = json.dumps(data) # 여기서 오류 발생
해결 방법 1: 기본 데이터 타입으로 변환
import json
from datetime import datetime
data = {
"name": "Alice",
"timestamp": datetime.now().isoformat() # datetime 객체를 문자열로 변환
}
json_data = json.dumps(data)
print(json_data)
해결 방법 2: 커스텀 인코더 사용
import json
from datetime import datetime
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
return super().default(obj)
data = {
"name": "Alice",
"timestamp": datetime.now()
}
json_data = json.dumps(data, cls=CustomEncoder)
print(json_data)
'RestfulAPI' 카테고리의 다른 글
RestfulAPI Python MySQL Connector 딜리트 방법과 코드 예제 (0) | 2024.05.22 |
---|---|
Restful API MySQL PUT 요청을 처리하는 방법(수정하기) (0) | 2024.05.22 |
Restful Python MySQL Connector 셀렉트 하는 방법과 코드 (0) | 2024.05.22 |
Restful Python 에서 MySQL 에 데이터 인서트 하는 방법 (0) | 2024.05.22 |
Restful Python MySQL Connector 설치 방법 (0) | 2024.05.22 |