序列化保存到文件:json
>>> import pickle >>> 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()
反序列化:code
>>> f = open('dump.txt', 'rb') >>> d = pickle.load(f) >>> f.close() >>> d {'age': 20, 'score': 88, 'name': 'Bob'}
注:不一樣版本的Python序列化的內容可能不兼容,建議用Pickle序列化只保存不重要的數據
JSON類型 | Python類型 |
---|---|
{} | dict |
[] | list |
"string" | str |
1234.56 | int或float |
true/false | True/False |
null | None |
序列化保存到文件:對象
>>> import json >>> 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()
序列化不轉義中文字符:ci
obj = dict(name='小明', age=20) s = json.dumps(obj, ensure_ascii=False)
反序列化:string
>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}' >>> d = json.loads(json_str) >>> d {'age': 20, 'score': 88, 'name': 'Bob'}
序列化類對象:it
import json class Student(object): def __init__(self, name, age, score): self.name = name self.age = age self.score = score s = Student('Bob', 20, 88) print(json.dumps(s, default=lambda obj: obj.__dict__))
反序列化類對象:table
def dict2student(d): return Student(d['name'], d['age'], d['score']) json_str = '{"age": 20, "score": 88, "name": "Bob"}' print(json.loads(json_str, object_hook=dict2student))