Home Object of type 'Decimal' is not JSON serializable
Post
Cancel

Object of type 'Decimal' is not JSON serializable

Error

  • 다음과 같이 flask에서 mysql db와 연동하여 값을 얻어와 json 형태로 바꿨을 때 error가 발생한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
      def empall(self): 
              all = []
              try:
                  conn = getConnection()
                  cursor = conn.cursor()
                  try:
                      cursor.execute("select * from emp01")
                      rows = cursor.fetchall()
        
                      objects_list = []
                      for row in rows:
                          d = collections.OrderedDict()
                          d['empno'] = row[0]
                          d['ename'] = row[1]
                          d['sal'] = row[2]
                          objects_list.append(d)
                      all = json.dumps(objects_list)
                  except Exception as e:
                      print(e)
              except Exception as e:
                  print(e)
              finally:
                  cursor.close()
                  conn.close()
              return all
    
  • Error

    1
    
      Object of type 'Decimal' is not JSON serializable
    

Error 해결

  • oracle db는 소수를 json 형태로 잘 바꿔주지만 mysql은 잘 바꿔주지 못하는것 같다.
  • 소수가 나올 수 있는 row[2] 부분을 int(row[2]) 혹은 float(row[2])로 바꾸어 해결하였다.
This post is licensed under CC BY 4.0 by the author.