Python中dumps()函数和dump()函数的区别与用法
在Python中,dumps()函数和dump()函数是用于序列化对象为JSON格式并将其写入文件的方法,以便将来能够重新加载。它们的区别在于dump()将JSON数据写入文件,而dumps()返回一个字符串。以下是dumps()和dump()函数的用法和示例:
1. dumps()函数的用法:
dumps()函数将Python对象序列化为JSON格式的字符串。
语法:json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
参数:
- obj:要序列化为JSON的Python对象。
- skipkeys:如果obj对象有非字符串键值对,则将其跳过,默认为False。
- ensure_ascii:如果该参数为True(默认值),则将所有非ASCII字符转义为\uXXXX序列,默认为True。
- check_circular:如果该参数为False(默认值),则允许序列化循环引用的对象,否则会抛出一个异常。
- allow_nan:如果该参数为True(默认值),则可以将NaN,Infinity和-Infinity序列化为JSON格式,默认为True。
- cls:指定一个可选的JSONEncoder子类来处理更复杂的对象,默认为None。
- indent:指定一个可选的缩进参数,以设置输出字符串的缩进级别,默认为None。
- separators:指定一个可选的分隔符参数,以设置输出字符串的分隔符,默认为(',', ':')。
- default:指定一个可选的函数,如果对象无法序列化,则将其转换为可序列化的值,默认为None。
- sort_keys:如果该参数为True(默认值),则按字母顺序对字典键进行排序。
示例:
import json
data = {'name': 'John', 'age': 30, 'city': 'New York'}
# 序列化Python对象为JSON字符串
json_str = json.dumps(data)
print(json_str) # 输出:{"name": "John", "age": 30, "city": "New York"}
2. dump()函数的用法:
dump()函数将Python对象序列化为JSON格式的字符串,并将其写入文件。
语法:json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
参数:
- obj:要序列化为JSON的Python对象。
- fp:一个已打开的文件对象,用于写入JSON数据。
- 其他参数与dumps()函数的参数相同。
示例:
import json
data = {'name': 'John', 'age': 30, 'city': 'New York'}
# 将Python对象序列化为JSON字符串,并写入文件
with open('data.json', 'w') as file:
json.dump(data, file)
输出:data.json文件中的内容为:{"name": "John", "age": 30, "city": "New York"}
总结:
dumps()和dump()函数是Python中常用的序列化方法,可以将Python对象转换为JSON格式的字符串,并存储为文件。它们在用法上的区别在于dumps()函数返回JSON字符串,而dump()函数将JSON字符串直接写入文件。
