详解Python中dumps()函数的参数和返回值
dumps()函数是Python中的序列化函数,用于将Python对象转换为可序列化的格式,通常是将对象转换为JSON格式的字符串。它的参数和返回值如下所示:
参数:
1. obj:需要序列化的对象,可以是一个字典、列表、字符串、数字等Python基本数据类型的组合。
2. skipkeys(可选):指定是否跳过非基本数据类型的键,默认值为False。如果设置为True,则遇到非基本数据类型的键时会引发TypeError异常;如果设置为False,则会将非基本数据类型的键转换为字符串类型,例如{5: "hello"}会被转换为{"5": "hello"}。
3. ensure_ascii(可选):指定是否使用ASCII编码输出,默认值为True。如果设置为False,则会保留非ASCII字符原样输出。
4. check_circular(可选):指定是否检查循环引用,默认值为True。如果设置为False,则允许序列化含有循环引用的对象,否则会引发异常。
5. allow_nan(可选):指定是否允许包含NaN、Infinity或-Infinity等特殊浮点数,默认值为True。如果设置为False,则会将这些特殊浮点数转换为字符串。
6. indent(可选):指定输出时的缩进空格数,用于美化输出,默认值为None。如果设置为非负整数,则会以该数目的空格进行缩进;如果设置为字符串,则会使用该字符串作为缩进字符,例如"\t"表示使用制表符进行缩进。
7. separators(可选):指定输出时键值对之间和元素之间的分隔符,默认值为(",", ":")。可以设置为任意的两个字符串来自定义分隔符,例如设置为(";", "=")表示使用分号作为键值对之间的分隔符,等号作为键和值之间的分隔符。
8. sort_keys(可选):指定是否按键对字典进行排序,默认值为False。如果设置为True,则输出时会按键的字典序进行排序。
返回值:
返回一个字符串,表示序列化后的对象。
使用例子:
import json
# 序列化字典
data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)
print(json_str) # 输出:{"name": "John", "age": 30}
# 序列化列表
data = [1, 2, 'hello', {'key': 'value'}]
json_str = json.dumps(data, indent=4)
print(json_str)
"""
输出:
[
1,
2,
"hello",
{
"key": "value"
}
]
"""
# 序列化带有非基本数据类型键的字典
data = {5: 'hello'}
json_str = json.dumps(data, skipkeys=True)
print(json_str) # 输出:{"5": "hello"}
# 序列化包含循环引用的对象
class Person:
def __init__(self, name):
self.name = name
self.friends = []
john = Person('John')
jane = Person('Jane')
john.friends.append(jane)
jane.friends.append(john)
json_str = json.dumps(john, check_circular=False)
print(json_str) # 报错:TypeError: <__main__.Person object at 0x7f****> is not JSON serializable
以上就是dumps()函数的参数和返回值及使用例子的详细解释。
