[Flask] TypeError: Object of type Decimal is not JSON serializable

깨미·2021년 8월 19일
0

Flask

목록 보기
4/9
post-thumbnail
post-custom-banner

json 형식에서 Decimal type이 있어 생기는 오류 였다.

이는 sqlalchemy query 결과로 나온 값이었는데, 이를 float로 변환하니 제대로 동작하는 것을 확인하였다.

Code
이해를 위해 사용된 함수 전체 코드를 첨부한다.

@app.route('/api/v1/sensordata', methods=['POST'])
def sensordata_get_api():
  data = json.loads(request.data)

  params = ['bid','dataname', 'days']
  
  for param in params:
    if param not in data:
      return make_response(jsonify('Parameters are not enough.'), 400)  
  json_data = []
  for i in data['days'] :
    sensordata_list = []  
    dev = db.session.query(--생략--).all()
    
    for b in dev :
      resultJSON = {
        "x": b.x,
        "y": float(b.y) # b.y 값이 Decimal로 나오기 때문에 float로 변환
      }
      
      sensordata_list.append(resultJSON)
    json_data.append({"date": i, "value": sensordata_list})

   
    
  result = {
    "result": "OK",
    "data": json_data
  }

  return make_response(jsonify(result), 200)  
profile
vis ta vie
post-custom-banner

0개의 댓글