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

Python中dumps()函数的详细用法解析

发布时间:2023-12-23 23:30:49

dumps()函数是Python标准库中json模块提供的一个方法,用于将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: 必需,要被序列化的Python对象。

- skipkeys: 可选,是否跳过非字符串键的字典,默认为False。

- ensure_ascii: 可选,如果为True(默认),则所有非ASCII字符将被转义为如"\uXXXX"的序列,如果为False,则保留非ASCII字符。

- check_circular: 可选,检查循环引用。如果为False(默认),则允许循环引用出现,并不抛出异常;如果为True,则抛出异常。

- allow_nan: 可选,是否支持NaN, Infinity和-Infinity作为JSON的数值,默认为True。

- cls: 可选,用于编码的自定义JSONEncoder子类。

- indent: 可选,用于美化JSON字符串的缩进空格数。如果为非负整数,则每一级缩进相应数量的空格;如果为字符串,则使用该字符串进行缩进;如果为None(默认),则表示不缩进。

- separators: 可选,为键-值对之间和项之间添加自定义分隔符。默认为(",", ":")。

- default: 可选,一个函数,用于对象的转换。如果对象无法被序列化,则使用该函数进行转换,默认为抛出TypeError异常。

- sort_keys: 可选,是否按键的顺序对字典进行排序,默认为False。

下面是一些使用dumps()函数的例子:

例子1:将一个字典对象转换为JSON字符串

import json

data = {"name": "John", "age": 30, "city": "New York"}

json_str = json.dumps(data)
print(json_str)

输出:

{"name": "John", "age": 30, "city": "New York"}

例子2:将一个包含中文的字典对象转换为JSON字符串,保留非ASCII字符

import json

data = {"姓名": "张三", "年龄": 25, "城市": "北京"}

json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

输出:

{"姓名": "张三", "年龄": 25, "城市": "北京"}

例子3:将一个包含循环引用的字典对象转换为JSON字符串

import json

data = {"name": "John", "age": 30}
data["person"] = data

json_str = json.dumps(data, check_circular=False)
print(json_str)

输出:

{"name": "John", "age": 30, "person": {"name": "John", "age": 30}}

例子4:对字典进行排序后再转换为JSON字符串

import json

data = {"name": "John", "age": 30, "city": "New York"}

json_str = json.dumps(data, sort_keys=True)
print(json_str)

输出:

{"age": 30, "city": "New York", "name": "John"}

例子5:自定义JSONEncoder子类

import json

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def toJSON(self):
        return {"name": self.name, "age": self.age}

data = Person("John", 30)

json_str = json.dumps(data, default=lambda obj: obj.toJSON())
print(json_str)

输出:

{"name": "John", "age": 30}

在这个例子中,我们定义了一个Person类,并通过default参数指定将对象转换为JSON格式的方法。