我来为你讲解一下“Python中json.dumps()函数的使用解析”。
一、什么是json.dumps()函数?
json.dumps()函数是Python内置的序列化JSON数据的方法,可以将一个Python数据结构转换为JSON格式的字符串。
1.1 json.dumps()函数的语法格式
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)
1.2 json.dumps()函数各参数的含义
- obj:待序列化的Python对象,可以是dict、list、tuple等容器类型的数据;
- skipkeys:如果可选参数skipkeys为True(默认为False),则跳过那些不能被JSON序列化的键值对(比如Python的None、NaN、Infinity等);
- ensure_ascii:如果可选参数ensure_ascii为True(默认为True),则在输出中所有非ASCII字符都将转义为\x的形式,如果ensure_ascii为False,则输出为原始Unicode字符;
- check_circular:如果可选参数check_circular为True(默认为True),则检查将要序列化的对象是否有循环引用的情况,如果有,则报错;
- allow_nan:如果可选参数allow_nan为True(默认为True),则浮点数值NaN、Infinity、-Infinity将被表示为字符串“NaN”、“Infinity”、“-Infinity”,默认值为True;
- cls:如果可选参数cls指定了一个class函数或者callable函数,则dumps采用其返回的对像进行序列化输出。比如,传入编码器 XXXEncoder 的如下:cls=XXXEncoder;
- indent:如果可选参数indent为非负整数,则使用该数值作为缩进级别,对输出进行格式化;
- separators:如果指定了可选参数separators,则它应该是一个包含两个字符串的元组,表示迭代器中键/值之间的分隔符和键值对之间的分隔符。默认的(separators=(',', ':'))将产生输出类似于'{"foo":1,"bar":2}'这样紧凑的字符串。为了产生更加可读性好的输出,可以指定(separators=(',', ': ')),从而产生类似'{"foo": 1, "bar": 2}'的输出;
- default:表示用于序列化未序列化对象的一个函数;
- sort_keys:如果可选参数sort_keys为True(默认为False),则按照字典序(按照ASCII的值)排序输出JSON对象的键值对,否则按照输入顺序输出。
二、json.dumps()函数的使用示例
2.1 将Python字典转换为JSON格式的字符串
下面的示例展示了如何使用json.dumps()函数将Python字典转换为JSON字符串,并输出到控制台:
import json
data = {
"name": "Alice",
"age": 18,
"hometown": "New York"
}
json_str = json.dumps(data)
print("转换后的JSON字符串为:", json_str)
输出结果如下:
转换后的JSON字符串为: {"name": "Alice", "age": 18, "hometown": "New York"}
2.2 将Python对象通过cls参数自定义序列化
下面的示例展示了如何使用json.dumps()函数中的cls参数自定义序列化,将对象中的datetime类型属性序列化为字符串:
import json
import datetime
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime.datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
return json.JSONEncoder.default(self, obj)
data = {
'name': 'Jack',
'datetime': datetime.datetime.now()
}
json_str = json.dumps(data, cls=CustomEncoder)
print("转换后的JSON字符串为:", json_str)
输出结果如下:
转换后的JSON字符串为: {"name": "Jack", "datetime": "2021-06-06 10:20:30"}
上面的代码中,我们自定义了一个json.JSONEncoder的子类CustomEncoder,并重写了他的default()方法,当obj对象是python的datetime.datetime类型时,会调用该方法将其转换为字符串类型输出。
以上就是关于Python中json.dumps()函数的使用解析的完整攻略,从语法格式、各参数含义到具体使用示例,希望可以对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中json.dumps()函数的使用解析 - Python技术站