본문 바로가기
Restful API

[Restful API] [Error] Object of type Decimal is not JSON serializable 에러 해결 방법

by dong_su 2023. 12. 12.

Object of type Decimal is not JSON serializable

-> (Decimal 유형의 객체는 JSON 직렬화가 가능하지 않습니다)

 

 

위 오류는 select 쿼리인 경우에, cursor에서 execute 후 cursor.fetchall()로 결과 리스트를 가져올 때 주로 발생했다.

결과리스트를 json 형식으로 클라이언트에게 보내야 하는데 그러기 위해선 데이터의 타입이 문자열이나 숫자여야 한다. 

datetime 타입이거나 decimal 타입일 경우 문자열이나 숫자타입으로 변환해서 클라이언트에게 보내야 한다.

 

해결 방법)

            i = 0
            for row in result_list :
                result_list[i]["year"] = row["year"].isoformat()
                result_list[i]["review_avg"] = float(row["review_avg"])
                i = i+1

-> isoformat()은 datetime타입을 문자열로 변환, float()은 decimal타입을 float 타입으로 변환해준다.