python json/pickle 模块
1、Json 定义
- 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。JSON 的数据格式其实就是 python 里面的字典格式,里面可以包含方括号括起来的数组,也就是 python 里面的列表。
- 特点:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
- 在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
""" 字典格式与json格式对比 """ # 字典格式: d = { 'a': 123, 'b': { 'x': ['A', 'B', 'C'] } } # json格式 { "a": 123, "b": { #必须是双引号(因为java等其它语言有使用双引号表示字符串,单引号不表示字符串) "x": ["A", "B", "C"] } }
- 在 python 中,有专门处理 Json 格式的模块 ——> json 和 picle模块
- Json 模块提供了四个方法: dumps、dump、loads、load
- pickle 模块也提供了四个功能:dumps、dump、loads、load
2、Python3 中可以使用 JSON 模块来对 JSON 数据进行编解码,它包含了两个函数:
- Python的JSON 模块序列化与反序列化的过程分别叫做:encoding 和 decoding。
- encoding: 把 Python 对象转换成 JSON 字符串 ---> json.dumps() 对数据进行编码
- decoding: 把 JSON 字符串转换成 Python 对象 ---> json.loads() 对数据进行解码
3、json.dumps() 对数据编码
- 将 python string 转换为 Json 对象
import json res = { "userAccount":"admin", "loginPwd":"123456" } print(type(res)) du_res = json.dumps(res) # print(du_res) print(type(du_res)) #结果如下 <class 'dict'> <class 'str'>
#json 编码过程中的中文显示 import json res = { "userAccount":"管理员", "loginPwd":"123456" } du_res = json.dumps(res) print(du_res) #结果如下 {"userAccount": "\u7ba1\u7406\u5458", "loginPwd": "123456"} #转码 import json res = { "userAccount":"管理员", "loginPwd":"123456" } du_res = json.dumps(res,ensure_ascii=False) print(du_res) #结果如下 {"userAccount": "管理员", "loginPwd": "123456"}
4、json.loads() 对数据解码
- 将 json string 转换成 python 对象
import json res = { "userAccount":"管理员", "loginPwd":"123456" } du_res = json.dumps(res,ensure_ascii=False) print(type(du_res)) #将 json string转换成 python 对象 lo_res = json.loads(du_res) print(type(lo_res)) #结果如下 <class 'str'> <class 'dict'>
5、json.dump() 文件数据编码
#dump 将数据编码,并写入打开的文件中。 import json v = {'k1':'yh','k2':'小马过河'} f = open('xiaoma.txt',mode='w',encoding='utf-8') #文件不存在就会生成 val = json.dump(v,f) print(val) f.close() #结果如下 None
6、json.load() 文件数据解码
import json f = open('xiaoma.txt',mode='r',encoding='utf-8') data = json.load(f) f.close() print(data,type(data)) #结果如下 {'k1': 'yh', 'k2': '小马过河'} <class 'dict'>
7、用于 python 特有的类型和 python 的数据类型间进行转换
- pickle 模块提供了四个功能:dumps、dump、loads、load
- 其中 dumps 和 loads 实现基于内存的 Python 对象与二进制互转;
- dumps():将 Python 中的对象序列化成二进制对象,并返回
- loads():读取给定的二进制对象数据,并将其转换为 Python 对象
- dump 和 load 实现基于文件的 Python 对象与二进制互转
- dump():将 Python 中的对象序列化成二进制对象,并写入文件
- load():读取指定的序列化数据文件,并返回对象
- 其中 dumps 和 loads 实现基于内存的 Python 对象与二进制互转;
import pickle # dic = {"name": "Evan", "age": "18"} # dic = [1, 2, 3] dic = "Evan" dp = pickle.dumps(dic) # 将任意数据类型类型转换成二进制文件 print(dp) dl = pickle.loads(dp) # # 将二进制文件恢复成原来的数据类型 print(dl)
import pickle dic = {"name": "lihua", "age": 30} with open("pickleFile", "wb") as f: pickle.dump(dic, f) # 将转换后的二进制文件存储在pickleFile文件里面 dic = {"name": "lihua", "age": 30} with open("pickleFile", "rb") as f: dic1 = pickle.load(f) # 将存储的文件内容导出为python对象 print(dic1) # {'name': 'lihua', 'age': 30}
作者:一个老宅男
微信:ZhengYing8887
出处:https://www.cnblogs.com/ZhengYing0813/
备注:本文版权归作者所有,欢迎转载和添加作者微信探讨技术,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。