본문 바로가기
Restful API

[Restful API] TypeError: Object of type ... is not JSON serializable 에러가 발생한 이유와 해결 방법

by dong_su 2023. 12. 6.

-> TypeError: Object of type datetime is not JSON serializable 에러


발생한 이유) 

cursor.fetchall()로 받아온 데이터를 확인하면 datetime 타입으로 된 데이터가 있다. 클라이언트에게 json 형식으로 보내줘야 한다. json은 문자열이나 숫자만 들어갈 수 있는데, datetime 타입인 데이터가 있기 때문에 발생한 에러이다.


해결법)

cursor = connection.cursor(dictionary=True)

-> fetchall() 함수의 인자 dictionary = True를 넣어줘서 데이터를 리스트와 딕셔너리의 형식으로 받아온 후

 

i = 0
            for row in result_list :
                result_list[i]["created_at"] = row["created_at"].isoformat()
                result_list[i]["updated_at"] = row["updated_at"].isoformat()
                i = i+1

-> datetime 타입을 문자열로 바꾸는 함수인 isoformat()과 for문을 이용해 datetime 타입인 데이터를 문자열로 바꿔준다.


 

-> status code 200과 함께 잘 동작된 모습이다.