Python序列化及反序列化

# -*- coding:utf-8 -*-

import pickle
import json

class Student():
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

def StuToJson(std):
    return {
        'name':std.name,
        'age':std.age,
        'sex':std.sex
    }

def JsonToStu(std):
    return Student(std['name'],std['age'],std['sex'])

def testpickle(path):
    s="My name is Joannes."
    ps=pickle.dumps(s)
    with open(path,'wb') as f:
        pickle.dump(s,f)
    print(ps)

def testunpickle(path):
    s="My name is Joannes"
    ps=pickle.dumps(s)
    _ps=pickle.loads(ps)
    print(_ps)

    with open(path,'rb') as f:
        ps_=pickle.load(f)
        print(ps_)

def testjsonpickle():
    s=Student("Joannes",'12','male')
    _s=json.dumps(s,default=StuToJson)
    print(_s)

    s_=json.loads(_s,object_hook=JsonToStu)
    print(s_)

def main():
    path="./data/pickle.txt"
    print("---------------------------------------------")
    testpickle(path)
    print("---------------------------------------------")
    testunpickle(path)
    print("---------------------------------------------")
    testjsonpickle()
    print("-------------------END-----------------------")

if __name__=="__main__":
    main()

  

posted @ 2020-11-13 00:10  Joooannes  阅读(80)  评论(0)    收藏  举报