it
Object of type datetime is not JSON serializable
jeonguram
2023. 7. 14. 16:47
반응형
해당 에러는 주로 아래와 같은 상황에서 나타난다.
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
반응형