目录

Python中dumpdumps和loadloads的异同

Python中dump、dumps和load、loads的异同

Python中dump、dumps和load、loads的异同

1. json.dump()和json.dumps()

用于对python对象(字典、列表等) 序列化 为JSON格式的数据

1.1 json.dump()

用于将Python对象(如字典、列表)直接序列化为JSON格式数据,并写入‌文件‌,需指定文件句柄作为参数‌。

data = {"name": "张三", "age": 18}
with open('data.json', 'w') as f: 
    json.dump(data, f)
1.1 json.dumps()

将Python对象序列化为JSON格式的‌字符串‌。

data = {"name": "张三", "age": 18}
json_str = json.dumps(data)

2. json.load()和json.loads()

将JSON格式的数据 反序列化 为Python对象(如字典或列表)

2.1 json.load()

用于从 ‌文件对象 ‌中读取JSON数据,并将其反序列化为Python对象(如字典或列表)。需通过open()等操作获取 文件句柄 作为参数‌。

with open('data.json', 'r') as f:  # r表示只读,使用dump时如果参数为r会报错
    data = json.load(f)  # 从文件读取并解析为Python对象
2.2. json.loads()

用于将‌JSON格式的字符串‌反序列化为Python对象,其参数是 字符串

json_str = '{"name": "李四", "age": 25}'
data = json.loads(json_str)  # 将字符串解析为字典

3. 总结对比

名称输入类型函数功能典型用途
json.load()文件对象‌反序列化 文件 中的json数据,返回python对象加载JSON文件到程序,如加载初始配置
json.loads()JSON字符串‌反序列化 字符串 的json数据,返回python对象解析字符串或网络传输数据
json.dump()文件对象将python对象进行序列化,并写入 文件将数据‌持久化保存到文件‌,生成配置或日志
json.dumps()python对象将python对象进行序列化,并返回 字符串适用于需将数据转换为字符串后‌网络传输、API交互等(如返回HTTP响应)

4. 区分

为了便于区分,可以从函数命名理解。

  • loads 理解为 load str 的缩写,也就是加载(反序列化)字符串,
  • dumps 理解为 dump st r的缩写,表示将 Python 对象序列化为‌字符串。
  • 不包含 s 的是对文件进行操作。

5. 完整代码

运行后,会在当前目录下生成 data.json 文件。

import json

data = {"name": "张三", "age": 18}
with open('data.json', 'w') as f:
    json.dump(data, f)

data = {"name": "张三", "age": 18}
json_str = json.dumps(data)
print(json_str)

with open('data.json', 'r') as f:  # r表示只读,使用dump时如果参数为r会报错
    data1 = json.load(f)  # 从文件读取并解析为Python对象
print(data1)
    

json_str = '{"name": "李四", "age": 25}'
data2 = json.loads(json_str)  # 将字符串解析为字典
print(data2)