标准库模块——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

 

posted @   新兵蛋Z  阅读(217)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
阅读排行:
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?
点击右上角即可分享
微信分享提示