스택큐힙리스트

"datetime.datetime not JSON serializable"를 어떻게 극복할 수 있을까요? 본문

카테고리 없음

"datetime.datetime not JSON serializable"를 어떻게 극복할 수 있을까요?

스택큐힙리스트 2023. 11. 5. 11:48
반응형

다음과 같은 기본 사전이 있습니다:


sample = {}
sample['title'] = String
sample['somedate'] = somedatetimehere

jsonify(sample)을 실행하려고 하면 다음과 같은 오류가 발생합니다:



TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000)은(는) JSON으로 직렬화할 수 없습니다



위의 오류를 해결하기 위해 어떻게 해야 할까요?


참고: 관련성이 없을 수도 있지만, 이 사전들은 mongodb에서 레코드를 검색하여 생성됩니다. str(sample['somedate'])를 출력할 때의 결과는 2012-08-08 21:46:24.862000입니다.

답변 1

날짜와 모든 것을 처리하는 빠르고 소모적인 JSON 덤프:


json.dumps(my_dictionary, indent=4, sort_keys=True, default=str)


default은 직렬화할 수 없는 객체에 적용되는 함수입니다.

이 경우에는 str이므로 알지 못하는 모든 것을 문자열로 변환합니다. 직렬화에는 좋지만 역직렬화할 때는 그렇지 않으며 (따라서 빠르고 소모적이라는 표현이 있음), 함수나 넘파이 배열과 같은 것들이 경고 없이 문자열로 변환될 수 있습니다.


답변 2

datetime.datetime not JSON serializable 문제를 해결하는 방법은 무엇일까요? 이 주제에 대한 한국어 기사를 작성해드리도록 하겠습니다.
제목: datetime.datetime이 JSON 직렬화되지 않는 오류를 극복하는 방법
서론:
컴퓨터 프로그래밍에서 자주 발생하는 오류 중 하나는 datetime.datetime이 JSON 직렬화되지 않는다는 것입니다. datetime.datetime 클래스는 일반적으로 날짜와 시간을 처리하는 데 주로 사용됩니다. 그러나 이 클래스의 객체는 직접 JSON으로 변환할 수 없습니다. 이러한 문제를 해결하기 위해서는 몇 가지 간단한 방법을 사용할 수 있습니다. 이 기사에서는 그런 해결책 몇 가지를 설명하고자 합니다.
본론:
1. json.dumps() 함수와 default 매개 변수 사용하기:
datetime.datetime 객체를 JSON으로 변환하려면, json.dumps() 함수를 사용할 수 있습니다. default 매개 변수를 활용하여 datetime.datetime 객체를 문자열로 변환하는 함수를 작성하면 됩니다.
예시 코드:
```
import json
from datetime import datetime
def serialize_datetime(obj):
if isinstance(obj, datetime):
return obj.__str__()
data = {'current_time': datetime.now()}
json_data = json.dumps(data, default=serialize_datetime)
```
2. datetime 객체를 문자열로 변환하기:
또 다른 해결책은 datetime.datetime 객체를 직렬화 가능한 문자열로 변환하는 것입니다. str() 또는 strftime() 함수를 사용하여 datetime 객체를 원하는 형식으로 문자열로 변경할 수 있습니다.
예시 코드:
```
from datetime import datetime
data = {'current_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
```
결론:
datetime.datetime not JSON serializable 오류는 datetime.datetime 객체가 직접 JSON으로 변환되지 않는다는 것을 의미합니다. 이 문제를 해결하기 위해서는 json.dumps() 함수와 default 매개 변수를 사용하거나, datetime.datetime 객체를 문자열로 변환하는 방법을 활용할 수 있습니다. 이러한 간단한 해결책을 통해 오류 없이 datetime 객체를 JSON으로 변환할 수 있습니다.

반응형
Comments