python(json 模块)
1.Json 定义
- 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。JSON 的数据格式其实就是 python 里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
- 特点:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
- 在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
- 序列化简单定义:变成 json 格式。定义:变成json格式。
- 反序列化简单定义: 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.json.dumps() 序列化
- 将 python 的值转换为 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"}
3.json.loads() 反序列化
- 将 json 格式的字符串转换成 python 的数据类型
import json res = { "userAccount":"管理员", "loginPwd":"123456" } du_res = json.dumps(res,ensure_ascii=False) print(type(du_res)) #将 json 格式的字符串转换成 python 的数据类型 dict lo_res = json.loads(du_res) print(type(lo_res)) #结果如下 <class 'str'> <class 'dict'>
4.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
5.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'>