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

详解Python中dumps()函数的参数和返回值

发布时间:2024-01-10 08:39:44

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()函数的参数和返回值及使用例子的详细解释。