【一】json模块
【1】什么是序列化
-
将Python中的字典、列表、元组 ... 转换成 字符串类型
-
如果使用str强制转换数据类型,造成的后果就是转换后的字符串无法转回Python对象
-
意思就是把字典、列表、元组 ... 转换成 字符串类型,就无法转回原来的类型了
-
无法转回Python对象的含义:尝试将一个非Python原生类型的对象转换为一个Python对象,但转换失败了。这可能是因为该对象并不直接对应于Python中的任何数据类型,或者没有提供适当的转换机制。
-
【2】什么是反序列化
-
将字符串类型的数据转换成Python对象的(字典、列表、元组 ...)
-
能将python对象转为字符串 --> 字符串转回python对象
-
就是其他类型转为字符串,字符串还是可以转为原本的类型
-
【3】json模块
(1)导入json模块
import json
(2)保存和读取
[1]序列化保存Python对象数据
#创建列表
user_data_dict = {
'username': "dream",
"password": "521"
}
#先存,后读
# 保存到本地的文件中 "保存进去是字典格式的字符串 独取出来也是字典格式的字典"
'''
with open("user_data.text", 'w', encoding='utf-8') as fp:
fp.write(str(user_data_dict))
with open("user_data.text", 'r', encoding='utf-8') as fp:
data = fp.read()
print(data)
[2]存储为json文件数据
-
文本文件后缀变成json
user_data_dict={"name":"tom"}
with open('user_data.json', 'w', encoding="utf-8") as fp:
json.dump(obj=user_data_dict={"name"}, fp=fp,ensuer_ascii=False)
[3]将json格式数据转换为Python对象
-
定义完with open以后 下面的格式是json.load(句柄),写进去是什么类型读出来就是什么类型
with open('user_data.json', 'r', encoding="utf-8") as fp:
data = json.load(fp)
#print(data, type(data))#可以打印看一下
(3)转换
-
反序列化和序列化方法之间的转换
-
将一个字典转换为一个字符串,将一个字符串转换为字典
[1]将字典转换为字符串格式
-
json.dumps()
import json
user_data_dict = {
'username': "dream",
"password": "521"
}
data_json_str = json.dumps(obj=user_data_dict)
print(data_json_str, type(data_json_str)) # {"username": "dream", "password": "521"} <class 'str'>
[2]将字符串转换为字典格式
-
json.loads()
import json
user_data_dict = {
'username': "dream",
"password": "521"
}
data_json_str = json.dumps(obj=user_data_dict)
print(data_json_str, type(data_json_str)) # {"username": "dream", "password": "521"} <class 'str'>
data_json_dict = json.loads(data_json_str)
print(data_json_dict, type(data_json_dict)) # {'username': 'dream', 'password': '521'} <class 'dict'>
(4)保存中文数据
user_data = {'name': "蚩梦", "age": 18}
with open('data.json', 'w', encoding='utf-8') as fp:
json.dump(obj=user_data, fp=fp, ensure_ascii=False)
# 编码和解码
# 编码 encode(编码格式)
# 解码 decode(编码格式)
【二】json和python互转有哪些
"""
from json import JSONEncoder
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
from json import JSONDecoder
+---------------+-------------------+
| JSON | Python |
+===============+===================+
| object | dict |
+---------------+-------------------+
| array | list |
+---------------+-------------------+
| string | str |
+---------------+-------------------+
| number (int) | int |
+---------------+-------------------+
| number (real) | float |
+---------------+-------------------+
| true | True |
+---------------+-------------------+
| false | False |
+---------------+-------------------+
| null | None |
+---------------+-------------------+
"""
【三】作业
# 写用户功能
# 购物车功能
# 【零】初始化商品信息
# 【1】提前有一个字典 字典中存储这个案例的数据
# 键是商品名 值是价格
data = {
"梦梦抱枕": 180, "梦梦抱枕套装": 200,
"梦梦睡衣": 120, "梦梦笔记本": 40,
"梦梦水杯": 20, "梦梦毛绒玩具": 60,
"梦梦围巾": 30, "梦梦手链": 25,
"梦梦钥匙扣": 15, "梦梦手机壳": 35,
}
# 【2】用json序列化保存上述商品数据到指定目录
# 【一】查看商品信息
# 【1】从指定目录中读取出当前 所有的商品信息
# 【2】打印所有的商品信息
# 【二】选择商品下单
# 【1】根据商品名称下单,可以根据商品索引下单
# 【2】保存你的当前购物车数据
# 【3】保存的时候不要忘记保存商品的数量和价格
# 【4】校验当前库存是否充足
# 【三】清空购物车
# 将购物车数据全部清空
# 【四】查看购物车商品
# 可以查看购物车商品信息
# 【五】删除购物车商品信息
# 【1】根据自己的商品信息删除指定的商品数据
# 【2】删除的时候校验当前是否有足够的删除
# 【六】下单商品(付款)
# 【1】将购物车所有的商品数据价格和单价计算出来做一个整合
# 【2】随意付款
# 【3】提示付款信息 每个商品多少个 单价是多少 总价是多少 ---> 付款总金额是多少
# 【七】退出系统
# 退出系统