标准库模块——json&pickle
本质就是将一种数据结构(如:字典,列表,数字)等转换成一个特殊的序列(字符串或者bytes)的过程叫做序列化。
json序列化要求:
1. 只能有int,str,bool,list,dict,float的类型支持序列化。
2. json序列化是以字符串形式出现。那么:lis= "[11,22,33]" 这样的也能称为序列化。
3. 必须将数据类型包裹在list或dict内进行转换。
4. json内部的str格式,必须以双引号来进行包裹。
5. bool值转换为小写的首字母
6. 存在字典里的key只能是str格式。
7. 不能连续load多次
json.dumps
将py转换为json(序列化)格式的字符串
1 2 3 4 | lis = [ 11 , 22 , 33 ] json_lis = json.dumps(lis) print ( type (json_lis)) #<class 'str'> |
如果序列化时,存在中文,那么默认将会以unnicode类型转换。可以使用ensure_ascii为False的形式存中文。
1 2 3 4 5 6 7 8 9 10 11 12 | v = [ 1 , 2 , 3 , 4 , '哈哈' ] data = json.dumps(v) print (data) #[1, 2, 3, 4, "\u54c8\u54c8"] ################################# v = [ 1 , 2 , 3 , 4 , '哈哈' ] data = json.dumps(v,ensure_ascii = False ) print (data) #[1, 2, 3, 4, "哈哈"] |
json.loads
将序列化格式字符串,反序列化为python文件格式。
1 2 3 4 | lis = [ 11 , 22 , 33 ] json_lis = json.dumps(lis) lis_1 = json.loads(json_lis) print ( type (lis_1)) |
json.dump & json.load
将序列化好的内容直接存放到一个文件内。load为直接读取文件内序列化的内容进行反序列化。
1 2 3 4 | import json v = [ 1 , 2 , 3 , 4 , '哈哈' ] with open ( 'test.txt' ,mode = 'w' ,encoding = 'utf-8' ) as f: json.dump(v,f,ensure_ascii = False ) |
pickle模块(使用方式都是一样的):
1. pickle只支持python类型的转换,而json支持其他代码语言的转换。
2. pickle可以将python中所有数据类型进行转换,而json不能转换元组(转换成列表)和集合,而且必须套到列表或字典中。
3. json序列化后的类型为字符串类型,而pickle所序列化的类型为bytes类型。
4. 几乎支持所有的python数据类型写到文件中
5. 支持连续的load
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)