欢迎访问宙启技术站
智能推送

Python中dumps()函数和dump()函数的区别与用法

发布时间:2024-01-18 06:59:21

在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字符串直接写入文件。