Python基础-序列化
来源:互联网 发布:手机首选网络怎么设置 编辑:程序博客网 时间:2024/05/16 06:16
序列化与反序列化
变量从内存中变成可存储或传输的过程
Java的序列化称serialization,Python的序列化中叫picking,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling.
示例
#!/usr/bin/env python3# -*- coding: utf-8 -*-# 对象序列化import pickledef runTest(): d = dict(name="Fadi", age=20) # 把任意对象序列化成一个 bytes result = pickle.dumps(d) print(result) f = open("dump.txt","wb") # 序列化写入文件 pickle.dump(d, f) f.close # 反序列化 f = open("dump.txt","rb") d = pickle.load(f) f.close print(d)# 运行runTest()
运行结果
D:\PythonProject>python main.pyb'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00Fadiq\x02X\x03\x00\x00\x00ageq\x03K\x14u.'{'name': 'Fadi', 'age': 20}
最最常用的 Json
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。
JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:
Json的系列化和反系列化
#!/usr/bin/env python3# -*- coding: utf-8 -*-# Json的使用import jsonclass Student(object): def __init__(self, name, age, score): self.name = name self.age = age self.score = scoredef studentToDict(std): return {"name":std.name, "age":std.age, "score":std.score}def dictToStudent(d): return Student(d["name"], d["age"], d["score"])def runTest(): s = Student("Chake", 20, 88) # Json 序列化 json_str = json.dumps(s, default = studentToDict) print(json_str) # Json 序列化 json_str = json.dumps(s, default = lambda obj:obj.__dict__) print(json_str) # Json 反序列化 result = json.loads(json_str, object_hook = dictToStudent) print(result)# 运行runTest()
运行结果
D:\PythonProject>python main.py{"name": "Chake", "age": 20, "score": 88}{"name": "Chake", "age": 20, "score": 88}<__main__.Student object at 0x02FDCD70>
阅读全文
0 0
- Python基础-序列化
- python基础—文件 | json序列化
- python基础之模块之序列化
- python基础之模块之序列化
- python基础之模块之序列化
- Python基础-Json和序列化
- python基础_序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- Python基础03 序列
- AspectJ 切面注解中五种通知注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around
- ARM 汇编语言程序设计
- PolyPolygon, Polyline, Polygon的简单用法
- Disruptor入门
- 微信小程序之初体验
- Python基础-序列化
- Hibernate 原生native sql支持 返回列名
- poj3268
- Failed to connect to /127.0.0.1:8080(使用retrofit2请求网络的时候出现的问题)
- 如何在本地部署vue+springboot前后端分离应用
- tar命令备份ubuntu系统
- MySQL百万级数据库优化
- spring 5.0 aspecj 08
- 修复节点(一)