视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python下JSON和pickle的用法介绍(附代码)
2020-11-27 14:20:57 责编:小采
文档


本篇文章给大家带来的内容是关于Python下JSON和pickle的用法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一:简介

(1)JSON (JavaScript Object Notation) 是一种轻量级(XML重量级)的数据交换格式。
是为了数据交换而定制的一种规则,它基于ECMAScript的一个子集。

(2)JSON是一种数据格式!
字符串是JSON的表现形式。(符合JSON格式的字符串叫做JSON字符串)

(3)Python3中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。

(4)JSON的优点是:易阅读、易解析、网络传输效率高、跨语言交换数据

二:python 编码为JSON类型转换对应表:

 _______________________________________________
 | python | JSON |
 -------------------------------------------------
 | dict | object |
 -------------------------------------------------
 | list,tuple | array |
 -------------------------------------------------
 | str | string |
 -------------------------------------------------
 | int,float,Enums | number |
 -------------------------------------------------
 | True,False,None | true,false,null |
 -------------------------------------------------

三: 如果你要处理的是文件而不是字符串,可以使用
json.dump()
json.load()

四:用pickle对数据序列化和反序列化

(1)方法:
pickle.dump()
pickle.load()
pickle.dumps()
pickle.loads()

(2)数据类型:
所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
由任何原生类型组成的列表,元组,字典和集合。
函数,类,类的实例

五:JSON和pickle之间的区别

JSON序列化和反序列化的目的是将Python数据类型转换为JSON标准类型,
或者将JSON类型的数据转换为python的数据类型,从而实现不同语言之间的数据交换!
pickle:在程序运行过程中希望保存一个数据,重用或者发送给其他人,可以采用这方式
将数据写入文件,支持所有数据类型!

import json
import pickle
# ----------------------------------------------#
# 反序列化
# ----------------------------------------------#
# object
json_str = '{"name":"qiyue", "age":18}' # JSON字符串
student = json.loads(json_str) # JSON对象转换为字典
print(student)
print(json_str)
print(type(student))

# object
json_str1 = '[{"name":"qiyue", "age":18, "flag":false}, ' 
 '{"name":"qiyue", "age":18}]' # JSON字符串
student1 = json.loads(json_str1) # JSON对象转换为字典
print(type(student1), student1)
print(student1[0])

# ----------------------------------------------#
# 序列化
# ----------------------------------------------#
student2 = [
 {"name": "qiyue", "age": 18, "flag": False},
 {"name": "qiyue", "age": 18}
 ]

json_str1 = json.dumps(student2) # 转换为字符串后可以利用正则表达式处理字符串
print(type(json_str1), json_str1)

# ----------------------------------------------#
# 处理的是文件
# ----------------------------------------------#
# 将数据写入文件
student3 = [
 {"name": "qiyue", "age": 18, "flag": False},
 {"name": "qiyue", "age": 18}
 ]
with open('data.json', 'w') as f:
 json.dump(student3, f)

# 读取数据
with open('data.json', 'r') as f:
 data = json.load(f)


# dumps(object)将对象序列化
list_a = ["English", "Math", "Chinese"]
list_b = pickle.dumps(list_a) # 序列化数据
print(list_a)
print(list_b)

# loads(object)将对象原样恢复,并且对象类型也恢复原来的格式
list_c = pickle.loads(list_b)
print(list_c)


# dumps(object,file)将对象序列化后存储到文件中
group1 = ("baidu", "wen", "qingtian")
f1 = open('group.txt', 'wb')
pickle.dump(group1, f1, True)
f1.close()

# load(object, file)将文件中的信息恢复
f2 = open('group.txt', 'rb')
t = pickle.load(f2)
f2.close()
print(t)

下载本文
显示全文
专题