python3模块: json & pickle
2017-09-30 11:57
639 查看
概念:
序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。
JSON(Java Script Object Notation):一种轻量级数据交互格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。
python2.6版本开始加入了JSON模块,python的json模块序列化与反序列化的过程分别是encoding和decoding。
encoding:把一个python对象编码转换成Json字符串。
decoding:把json格式字符串编码转换成python对象。
用于序列化的两个模块
json:用于字符串和Python数据类型间进行转换
pickle: 用于python特有的类型和python的数据类型间进行转换
json提供四个功能:dumps,dump,loads,load
pickle提供四个功能:dumps,dump,loads,load
具体应用:
json提供四个功能:dumps, dump, loads, load
1 # dumps功能 2 # 将数据通过特殊的形式转换为所有程序语言都认识的字符串 3 >>> import json 4 >>> data = ['aa', 'bb', 'cc'] 5 >>> j_str = json.dumps(data) 6 >>> j_str 7 '["aa", "bb", "cc"]'
1 # loads功能 2 # 将json编码的字符串再转换为python的数据结构 3 >>> j_str 4 '["aa", "bb", "cc"]' 5 >>> mes = json.loads(j_str) 6 >>> mes 7 ['aa', 'bb', 'cc']
1 # dump功能 2 # 将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件 3 with open('D:/tmp.json', 'w') as f: 4 json.dump(data, f) 1 # load功能 2 # 从数据文件中读取数据,并将json编码的字符串转换为python的数据结构 3 with open('D:/tmp.json', 'r') as f: 4 data = json.load(f)
说明:
json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict.
对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。
json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],因为其他语言没有元组的概念,只有数组,也就是列表。
1 >>> import json 2 >>> data = {'a':True, 'b':False, 'c':None, 'd':(1,2), 1:'abc'} 3 >>> j_str = json.dumps(data) 4 >>> j_str 5 '{"a": true, "c": null, "d": [1, 2], "b": false, "1": "abc"}'
pickle可以存储什么类型的数据呢?
所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。由任何原生类型组成的列表,元组,字典和集合。
函数,类,类的实例
pickle应用:
1 # dumps功能 2 import pickle 3 data = ['aa', 'bb', 'cc'] 4 # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串 5 p_str = pickle.dumps(data) 6 print(p_str) b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e. b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e. 1 # loads功能 2 # loads 将pickle数据转换为python的数据结构 3 mes = pickle.loads(p_str) 4 print(mes) 5 ['aa', 'bb', 'cc'] 1 # dump功能 2 # dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件 3 with open('D:/tmp.pk', 'w') as f: 4 pickle.dump(data, f) 1 # load功能 2 # load 从数据文件中读取数据,并转换为python的数据结构 3 with open('D:/tmp.pk', 'r') as f: 4 data = pickle.load(f)
相关文章推荐
- Python模块:shutil、序列化(json&pickle&shelve)、xml
- Python Json&Pickle&模块
- python3----模块(序列化(json&pickle)+XML+requests)
- python学习之路(json & pickle 模块 ---序列化,反序列化)
- python基础6之迭代器&生成器、json&pickle数据序列化
- python常见模块之序列化(json与pickle以及shelve)
- python全栈开发-json和pickle模块(数据的序列化)
- python学习-json&pickle
- python之路-14.Json & pickle 数据序列化
- python模块之pickle、shelve、json
- Python编程_Lesson014_json和pickle模块讲解
- python3之序列化(pickle&json&shelve)
- Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
- day5-python中的序列化与反序列化-json&pickle
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
- python序列化模块json和pickle
- python序列化pickle模块和json模块简单学习
- python struct、json、pickle模块
- python 之序列化(pickle模块和json模块)
- Python--模块之sys模块、logging模块、序列化json模块、序列化pickle模块