¥json模块¥

【一】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】提示付款信息 每个商品多少个 单价是多少 总价是多少 ---> 付款总金额是多少

# 【七】退出系统
# 退出系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值