阅读 100

json序列化

引言:

           json数据中可能存在 datetime ,Decimal类型的数据,比如使用ORM返回的数据,然后在序列化json的时候就会报错,并且json的数据结构可能是嵌套的

 

代码:

from datetime import datetime, date
from decimal import Decimal


class SerData(object):

    @staticmethod
    def ser_data(data):
# 如果确定 json 数据中含有空字段 下边的判断需要删掉 if not data: raise KeyError("传入数据不可以为空") if isinstance(data, list or tuple): datas = [] for i in data: a = SerData.ser_data(i) datas.append(a) return datas elif isinstance(data, dict): for k in data.keys(): data[k] = SerData.ser_data(data[k]) return data elif isinstance(data, datetime) or isinstance(data, date): return str(data) elif isinstance(data, Decimal): return round(float(data), 2) else: return data if __name__ == ‘__main__‘: dict_a = {"a": datetime.now(), "b": [{"c": Decimal(222.22)}]} list_b = [{"aa": datetime.now()}, {"bb": [{"c": Decimal(333.22)}]}] list_c = [datetime.now(), Decimal(333.22), {"bb": [{"c": Decimal(333.22)}]}, {"a": datetime.now(), "b": [{"c": Decimal(222.22)}]}, [{"aa": datetime.now()}, {"bb": [{"c": Decimal(333.22)}]}]] list_d = ["2021", {"dd": {"ee": {"ff": [Decimal(666.22)], "ffff": {"times": datetime.now()}}}}] print(SerData.ser_data(dict_a)) print(SerData.ser_data(list_b)) print(SerData.ser_data(list_c)) print(SerData.ser_data(list_d))

  

原文:https://www.cnblogs.com/yuan-x/p/15089458.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐