API 개발/Restful API

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

신강희 2024. 5. 24. 11:20
728x90

< TypeError : Object of type ... is not JSON serializable 

에러가 발생한 이유와 해결방법 >

 

# 바로 이전 게시글 형식과 이어짐 (https://sorktjrrb.tistory.com/143)

# 이전 게시글에서 select 문에대해서 작성중에 해당 오류가 발생되는 경우가 있다.

- TypeError : Object of type ... is not JSON serializable

 

# 이유는 파이썬의 JSON 직렬화 불가능한 데이터 형식을 JSON으로 변환하려고 했기 때문

- 이전 게시글에선 날짜와 시간을 ISO 형식의 문자열로 변환하여서 해결!

- 이를 위해서는 datetime 객체의 isoformat() 메서드를 사용하면 된다.

 
        # 클라이언트에 json 만들어서 응답한다. => 문자와 숫자로만 구성하여 보내야 한다.
        ### 중요! DB에서 가져온 timestamp는 python에서 datetime으로 자동 변환되는데
        ### 문제는, datetime은 json 형태로 보낼수가 없다! 문자와 숫자로만 구성해야 하기 때문에!
        ### 따라서, 시간을 문자열로 변환해서 보내주어야 한다.
        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

            print()
            print(result_list)
       
        return {'items' : result_list,
                'count' : len(result_list),
                'result' : 'success'}
   

 

다음 게시글로 계속~!

 

반응형