Python 常用模块json

json序列化模块

【1】定义

  • 序列化:将数据结构或对象转换为可存储或传输的格式
  • 反序列化:将序列化后的数据恢复为开始的数据结构或者对象
  • 通过序列化和反序列,可以轻松地在不同的应用程序或平台之间传输数据,并在需要时重新构造原始的数据结构和对象

【2】目的

  • 数据持久化存储: 将程序中的数据结构转换为字节流或文本格式,以便长期存储在文件、数据库或其他持久性存储介质中。这样,下次程序运行时,可以通过反序列化将数据重新加载到内存中,继续使用。

  • 跨平台数据交互:在不同的应用程序、系统或平台之间传递数据。通过将数据序列化为通用的格式(如 JSON、XML),不同的系统可以轻松地交换信息,而不受编程语言或平台的限制。

  • 远程通信:在网络上传输数据时,将数据序列化为字节流,以便通过网络传递。接收方可以将接收到的字节流反序列化为原始数据结构,实现远程通信。

  • 缓存:将一些计算昂贵的数据结构序列化并保存在缓存中。这样,下次需要相同数据时,可以直接从缓存中反序列化,而不必重新计算。

  • 进程间通信: 在多进程或多线程的环境中,通过序列化可以实现进程间的数据传递。不同的进程可以将数据序列化后传递给其他进程,从而实现进程间的通信。

【3】Json和Python内置的数据类型对应表

Json数据类型Python数据类型
{}dict
[]list、tuple
“string”str
123.456inf/float
true/falseTrue/False
nullNone

【4】代码演示

(1)序列化drumps和反序列化loads
  • 序列化drumps

    • 序列化以后的类型都为json格式的字符串

    • 集合无法序列化成json格式的字符串

import json

int1 = 1
float1 = 1.1
str1 = "1"
bool1 = True
list1 = [1, 2]
dict1 = {"name": "bruce"}
set1 = {1, 2}
tuple1 = (1, 2)


# 序列化 整型
int_dumps = json.dumps(int1)
print(int_dumps, type(int_dumps))       # 1 <class 'str'>
# 序列化 浮点型           
float1_dumps = json.dumps(float1)
print(float1_dumps, type(float1_dumps)) # 1.1 <class 'str'>
# 序列化 字符串
str1_dumps = json.dumps(str1)
print(str1_dumps, type(str1_dumps))     # "1" <class 'str'>
# 序列化 布尔型
bool1_dumps = json.dumps(bool1)
print(bool1_dumps, type(bool1_dumps))   # true <class 'str'>
# 序列化 列表
list1_dumps = json.dumps(list1)
print(list1_dumps, type(list1_dumps))   # [1, 2] <class 'str'>
# 序列化 字典
dict1_dumps = json.dumps(dict1)
print(dict1_dumps, type(dict1_dumps))   # {"name": "bruce"} <class 'str'>
# 序列化 集合
# set1_dumps = json.dumps(set1)         # 报错,集合无法转换成json格式
# print(set1_dumps, type(set1_dumps))
# 序列化 元组
tuple1_dumps = json.dumps(tuple1)
print(tuple1_dumps, type(tuple1_dumps)) # [1, 2] <class 'str'>
  • 反序列化
    • 元组反序列化以后是列表
# 反序列化 整型
int_loads = json.loads(int_dumps)
print(int_loads, type(int_loads))  # 1 <class 'int'>
# 反序列化 浮点型
float1_loads = json.loads(float1_dumps)
print(float1_loads, type(float1_loads))  # 1.1 <class 'float'>
# 反序列化 字符串
str1_loads = json.loads(str1_dumps)
print(str1_loads, type(str1_loads))  # 1 <class 'str'>
# 反序列化 布尔型
bool1_loads = json.loads(bool1_dumps)
print(bool1_loads, type(bool1_loads))  # True <class 'bool'>
# 反序列化 列表
list1_loads = json.loads(list1_dumps)
print(list1_loads, type(list1_loads))  # [1, 2] <class 'list'>
# 反序列化 字典
dict1_loads = json.loads(dict1_dumps)
print(dict1_loads, type(dict1_loads))  # {'name': 'bruce'} <class 'dict'>

# 反序列化 元组
tuple1_loads = json.loads(tuple1_dumps)
print(tuple1_loads, type(tuple1_loads))  # [1, 2] <class 'list'>
(2)序列化drump和反序列化load
  • 序列化drump
    • 通常保存转换字典格式
    • 不适用于追加a模式
import json

user_dict = {"username": "bruce", "age": 18}
with open("01.json", "w", encoding="utf8") as fp:
    json.dump(user_dict, fp=fp)
    
# 结果
# {"username": "bruce", "age": 18}    
# 写入文件默认使用ASCII编码存储
# 在open中encoding="utf8"仅表示按照这个格式打开
# 还需要关闭json的默认编码格式
import json

user_dict = {"username": "秦始皇", "age": 100}
with open("01.json", "w", encoding="utf8") as fp:
    json.dump(user_dict, fp=fp)
# {"username": "\u79e6\u59cb\u7687", "age": 100}

user_dict = {"username": "秦始皇", "age": 100}
with open("01.json", "w", encoding="utf8") as fp:
	json.dump(user_dict, fp=fp, ensure_ascii=False)
# {"username": "秦始皇", "age": 100}

  • 反序列化load
import json

with open("01.json", "r", encoding="utf8") as fp:
    data = json.load(fp=fp)
    print(data, type(data))
# {'username': '秦始皇', 'age': 100} <class 'dict'>

【5】应用(登陆注册功能)

import json


def save_data(user_dict):
    # 将字典写入user_dict.json文件
    with open("user_dict.json", "w", encoding="utf8") as fp:
        json.dump(user_dict, fp=fp, ensure_ascii=False)


def read_data():
    # 将user_dict.json内容读出
    with open("user_dict.json", "r", encoding="utf8") as fp:
        user_dict = json.load(fp=fp)
        return user_dict


def register():
    # 输入用户名和密码
    username = input("username>>>:").strip()
    password = input("password>>>:").strip()
    # 以json格式存储信息
    user_dict = {"username": username, "password": password}
    save_data(user_dict)
    print("register successful")


def login():
    # 输入用户名和密码
    username = input("username>>>:").strip()
    password = input("password>>>:").strip()
    # 读取信息并进行校验
    user_dict = read_data()
    if username == user_dict["username"] and password == user_dict["password"]:
        print("login successful")
    else:
        print("username or password wrong")


register()
login()
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,你想了解关于Python中的json模块的一些信息,对吧? json模块Python标准库中的一个模块,用于解析和生成JSON(JavaScript Object Notation)数据格式。JSON是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。 使用json模块,可以将Python对象(如字典、列表等)与JSON数据格式进行相互转换。具体来说,可以使用json.dumps()函数将Python对象转换为JSON格式的字符串,使用json.loads()函数将JSON格式的字符串转换为Python对象。 下面是一个简单的示例代码,演示了如何使用json模块Python对象转换为JSON格式的字符串,并将JSON格式的字符串转换为Python对象: ```python import json # 将Python对象转换为JSON格式的字符串 data = {"name": "Alice", "age": 30} json_str = json.dumps(data) print(json_str) # 输出: {"name": "Alice", "age": 30} # 将JSON格式的字符串转换为Python对象 data2 = json.loads(json_str) print(data2) # 输出: {'name': 'Alice', 'age': 30} ``` 希望这个简要的介绍能够帮助你更好地了解Python中的json模块。 ### 回答2: Pythonjson模块是用来处理JSON数据的模块JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于将数据从一个系统传递到另一个系统。 通过json模块,我们可以将Python的数据结构(如字典、列表)转换为JSON格式的字符串,并且可以将JSON格式的字符串转换为Python的数据结构。json模块提供了loads()函数和dumps()函数来完成这两种转换。 loads()函数可以将JSON格式的字符串转换为Python的数据结构。例如,将'{"name": "Amy", "age": 18}'这样的JSON字符串转换为一个字典{'name': 'Amy', 'age': 18}'。 dumps()函数可以将Python的数据结构转换为JSON格式的字符串。例如,将字典{'name': 'Amy', 'age': 18}'转换为'{"name": "Amy", "age": 18}'这样的JSON字符串。 除了基本的转换功能,json模块还提供了其他一些功能,如处理JSON中的null值、将JSON数据写入文件、从文件读取JSON数据等。 总之,json模块Python中起着重要的作用,它可以方便地将Python的数据结构与JSON格式进行互相转换,使得数据在不同系统之间的传递更加便捷。 ### 回答3: Pythonjson模块是用来处理JSON(JavaScript Object Notation)数据的模块JSON是一种常用的数据格式,它以键值对的形式表示数据,并且易于阅读和解析。 json模块提供了一些函数和方法,用于将Python对象转换为JSON格式的字符串,并且可以将JSON字符串转换回Python对象。它还可以简化与JSON数据的交互,使得读取、写入和解析JSON数据变得更加方便。 使用json模块,可以对JSON数据进行以下操作: 1. 序列化:将Python对象转换为JSON字符串。可以使用`json.dumps()`函数来实现。例如,将字典对象转换为JSON字符串:`json.dumps({'name': 'John', 'age': 25})`。 2. 反序列化:将JSON字符串转换回Python对象。可以使用`json.loads()`函数来实现。例如,将JSON字符串转换为字典对象:`json.loads('{"name": "John", "age": 25}')`。 3. 读取JSON文件:可以使用`json.load()`函数从JSON文件中读取数据,并将其转换为Python对象。 4. 写入JSON文件:可以使用`json.dump()`函数将Python对象写入JSON文件中。 json模块还提供了其他一些功能,如处理嵌套JSON数据、处理特殊数据类型(如日期、日期时间等)以及自定义编码和解码规则等。 总之,Pythonjson模块提供了一种方便和灵活的方式来处理JSON数据。无论是将Python对象序列化为JSON字符串,还是将JSON字符串反序列化为Python对象,json模块都是一个十分实用的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值