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)