zoukankan      html  css  js  c++  java
  • json 对数据进行序列化时,对不是python基本数据类型进行序列化时,如对--对象、日期、时间等处理

    ''''

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import json as default_json
    from json.encoder import JSONEncoder


    class JsonEncoder(JSONEncoder):
    def default(self, o):
    if isinstance(o, object):
    return o.__dict__
    return JSONEncoder.default(self, o)


    class Json(object):

    @staticmethod
    def dumps(response, ensure_ascii=True):

    return default_json.dumps(response, ensure_ascii=ensure_ascii, cls=JsonEncoder)



    ''''

    import json
    from json.encoder import JSONEncoder
    from datetime import datetime,date
    
    class Jsonencoder(JSONEncoder):
        def default(self, field):
            if isinstance(field,datetime):    #如果field是日期类型
                return field.strftime("%Y-%m-%d %H:%M:%S")
            elif isinstance(field,date):
                return field.strftime("%Y-%m-%d")
            elif isinstance(field,object):
                return field.__dict__
            else:
                return json.JSONEncoder.default(self,field)
    
    class Baseobj():
        def __init__(self):
            self.status=True
            self.message=None
            self.data=None
            self.name="hello"
    #json序列化只能dumps py的基本数据类型:如字典,列表、数字,如日期、对象的话需要做特殊处理
    aa=Baseobj()
    print("----------",aa)   #<__main__.Baseobj object at 0x000002D941E97F48>
    data_obj={
        "k1":132,
        "k2":datetime.now(),
        "k3":Baseobj(),
        "k4":"hao",
      "k5":[
    "as", 2, "sadf"]
    }
    
    ds=json.dumps(data_obj,cls=Jsonencoder)
    print(ds)
    
    '''
    {"k1": 132,
    "k2": "2021-02-24 19:40:20",
    "k3": {"status": true, "message": null, "data": null, "name": "hello"},
    "k4": "hao",
    "k5": ["as", 2, "sadf"]
    }
    '''
  • 相关阅读:
    C++11 指针成员与拷贝构造(浅拷贝与深拷贝)
    C++11 委派构造函数
    C++11 继承构造函数
    C++11 局部和匿名类型作模板实参
    C++11 外部模板
    C++11 函数模板的默认模板参数
    2D游戏新手引导点光源和类迷雾实现
    UVA 12293
    【算法】8 图文搭配诠释三种链表及其哨兵
    小米面试
  • 原文地址:https://www.cnblogs.com/longyi2020/p/14443461.html
Copyright © 2011-2022 走看看