当前位置: 首页 > 后端技术 > Python

PythonPickle和JSON序列化

时间:2023-03-26 13:20:25 Python

Built-inPickleserializationSerializationsavedtofile:>>>importpickle>>>d=dict(name='Bob',age=20,score=88)>>>pickle.dumps(d)b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u。'>>>f=open('dump.txt','wb')>>>pickle.dump(d,f)>>>f.close()反序列化:>>>f=open('dump.txt','rb')>>>d=pickle.load(f)>>>f.close()>>>d{'age':20,'score':88,'name':'Bob'}注意:不同版本Python序列化的内容可能不兼容,推荐使用Pickle序列化,只保存不重要的数据JSON序列化JSON类型Python类型{}dict[]list"string"str1234.56intorfloattrue/falseTrue/FalsenullNone序列化并保存到文件:>>>importjson>>>d=dict(name='Bob',age=20,score=88)>>>json.dumps(d)'{"age":20,"score":88,"name":"Bob"}'>>>f=open('dump.txt','wb')>>>json.dump(d,f)>>>f.close()连载不转义汉字ters:obj=dict(name='Xiaoming',age=20)s=json.dumps(obj,ensure_ascii=False)反序列化:>>>json_str='{"age":20,"score":88,"name":"Bob"}'>>>d=json.loads(json_str)>>>d{'age':20,'score':88,'name':'Bob'}顺序化类对象:importjsonclassStudent(object):def__init__(self,name,age,score):self.name=nameself.age=ageself.score=scores=Student('Bob',20,88)print(json.dumps(s,default=lambdaobj:obj.__dict__))反序列表化类:defdict2student(d):returnStudent(d['name'],d['age'],d['score'])json_str='{"age":20,"score":88,"name":"Bob"}'print(json.loads(json_str,object_hook=dict2student))