Python 杂记(2) decimal类型序列化

在对结构化数据使用 json.dumps(data) 时, 遇到如下报错

TypeError: Decimal('3.40') is not JSON serializable

decimal类型无法直接序列化, 解决方案如下


定义
# from OpenStack
import decimal
import json


class DecimalJSONEncoder(json.JSONEncoder):
    """Wrapper class to handle decimal.Decimal objects in json.dumps()."""

    def default(self, obj):
        if isinstance(obj, decimal.Decimal):
            return float(obj)
        return super(DecimalJSONEncoder, self).default(obj)

使用
desc = json.dumps(frame['desc'], cls=DecimalJSONEncoder)
posted on 2021-08-06 17:35  〆灬丶  阅读(231)  评论(0编辑  收藏  举报