• 19.python的序列化


    自定制序列化

    import json
    from datetime import datetime
    
    class JsonCustomEncoder(json.JSONEncoder):                  #自定制序列化类
        def default(self, field):                               #field是(123,datetime.now(),Response())
            if isinstance(field, datetime):                     #对datetime.now()转换成字符串类型就可以序列化
                return field.strftime('%Y-%m-%d %H')
            elif isinstance(field, Response):                   #对Response()转换成字典类型就可以序列化
                return field.__dict__
            else:
                return json.JSONEncoder.default(self, field)   #如果是正常的可以序列化的就用默认的序列化方式
    
    class Response(object):
        def __init__(self):
            self.status =True
            self.data = "abcd"
    
    data = {
        'k1': 123,
        'k2': datetime.now(),                        #datetime正常不能序列化(json.dumps默认只能序列化字典列表字符串布尔值)
        'k3': Response()                             #Response() 正常不能序列化
    }
    ds = json.dumps(data, cls=JsonCustomEncoder)    #cls等于JsonCustomEncoder类,这个类必须继承json.JSONEncoder后data每次拿到数据都会执行default方法
    print(ds)

    返回:
    {"k1": 123, "k3": {"data": "abcd", "status": true}, "k2": "2019-04-04 09"}

  • 相关阅读:
    ASCII,Unicode,UTF
    C#值类型和引用类型2
    C#中使用Foreach
    CSS基础(2)
    CSS基础
    HTML基础
    MySQL高级
    MySQL和Python交互案例练习(2)
    MySQL和Python交互案例练习(1)
    外键SQL语句的编写
  • 原文地址:https://www.cnblogs.com/xixi18/p/10655225.html
Copyright © 2020-2023  润新知