首页 > Web开发 > 详细

json序列化

时间:2021-08-02 14:53:51      阅读:13      评论:0      收藏:0      [点我收藏+]

引言:

           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))

  

json序列化

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!