zoukankan      html  css  js  c++  java
  • 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"}

  • 相关阅读:
    ruby **option作为函数参数,map的key必须是符号
    计算2..n的素数
    css,世界上没有绝对简单的事情
    modernizr的介绍和使用
    图解HTTP
    px、em、rem区别介绍
    web开发规范文档
    iscroll API
    sulime text 常用快捷键总结
    a href="javascript:void(0)"
  • 原文地址:https://www.cnblogs.com/xixi18/p/10655225.html
Copyright © 2011-2022 走看看