python中的序列化

1 篇文章 0 订阅
1 篇文章 0 订阅
  1. 把一个python对象序列化为jsom

    >>> import json
    >>> d = dict(name='Bob', age=20, score=88)
    >>> json.dumps(d)
    '{"age": 20, "score": 88, "name": "Bob"}'
    

    dumps()方法返回一个str,内容就是标准的JSON。类似的,dump()方法可以直接把JSON写入一个file-like Object。

    要把JSON反序列化为Python对象,用loads()或者对应的load()方法,前者把JSON的字符串反序列化,后者从file-like Object中读取字符串并反序列化:

    >>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
    >>> json.loads(json_str)
    {'age': 20, 'score': 88, 'name': 'Bob'}
    
  2. 对于实例对象

    json.dumps(s, default=student2dict)
    #s为实例对象,可选参数default就是把一个实列对象
    变成一个可序列化为json的对象,
    而default的值就是一个实例对象转换为可序列化对象的转换函数
    

    不过,遇到的下一个实列对象,仍然无法序列化为json。
    那么有一个规则,把任意的class实例变为dict。

    json.dumps(s, default=lambda obj: obj.__dict__)
    
  3. 反序列为实例对象

    def dict2student(d):
    return Student(d['name'], d['age'], d['score'])
    

    把JSON反序列化为一个Student对象实例,loads()方法首先转换出一个dict对象

    然后,我们传入的object_hook函数负责把dict转换为Student实例:

    >>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
    >>> print(json.loads(json_str, object_hook=dict2student))
    <__main__.Student object at 0x10cd3c190>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值