Python中dump、dumps和load、loads的异同
- Python中dump、dumps和load、loads的异同
- 1. json.dump()和json.dumps()
- 1.1 json.dump()
- 1.1 json.dumps()
- 2. json.load()和json.loads()
- 2.1 json.load()
- 2.2. json.loads()
- 3. 总结对比
- 4. 区分
- 5. 完整代码
- 1. json.dump()和json.dumps()
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)