Python中dumps()函数的详细用法解析
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格式的方法。
