Object of type datetime is not JSON serializable
2023. 7. 14. 16:47ㆍit
반응형
해당 에러는 주로 아래와 같은 상황에서 나타난다.
import datetime
import json
data = {'time' : datetime.datetime.now()}
json.dumps(data)
해당 에러는 datetime 데이터를 직렬화 하지 못해서 생기는 에러이다.
json.dumps(data) 뒤에 옵션을 하나만 주면 되는데, 항상 그 옵션을 잊어버려 정리한다.
반응형
1. 옵션을 직접 만들어서 사용하기
import json
from datetime import datetime
# datetime 객체를 문자열로 변환하는 함수
def datetime_to_string(obj):
if isinstance(obj, datetime):
return obj.__str__()
# JSON 직렬화
data = {
'timestamp': datetime.now(),
'message': 'Hello, world!'
}
json_data = json.dumps(data, default=datetime_to_string)
print(json_data)
2. bson를 활용하기
import json
from datetime import datetime
from bson import json_util
# JSON 직렬화
data = {
'timestamp': datetime.now(),
'message': 'Hello, world!'
}
json_data = json.dumps(data, default=json_util.default)
print(json_data)
나는 주로 2번을 활용한다. 이유는 코드라인을 줄일수 있어서 그렇다.
단점이 있다면 'pip install bson'를 해야 한다는 점이다
pip install bson
반응형
'it' 카테고리의 다른 글
주식 예측 AI 개발 노트 (0) | 2023.11.17 |
---|---|
LangChain과 MongoDB 연동 (feat. sentence_transformers ) (0) | 2023.11.08 |
[Python] AttributeError: module 'lib' has no attribute 'SSL_CTX_set_ecdh_auto' 에러 해결 방법 (0) | 2023.06.19 |
Windows에서 Vue.js 설치하기 ( Vue3 버전 ) (0) | 2023.06.12 |
MongoDB Atlas search Index Knn 사용방법 ( 비슷한 문서 찾기 ) (0) | 2023.06.08 |