Python json.dumps 参数详解
1. 简介
json.dumps()
是 Python 中用于将 Python 对象转换为 JSON 字符串的方法。该方法提供了多个参数来控制 JSON 字符串的生成方式。本文将详细介绍 json.dumps()
的参数及其用法。
2. 语法
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)
3. 参数说明
3.1 obj(必需)
要进行 JSON 编码的 Python 对象。可以是 dict、list、tuple 等不可变对象。
3.2 skipkeys
如果设置为 True
,则会跳过一些不合法的键类型(例如包含非字符串键的字典)。默认情况下,该参数为 False
。
示例:
import json
data = {1: 'one', 2.5: 'two point five', 'three': 3}
result = json.dumps(data, skipkeys=True)
print(result)
输出结果:
{"1": "one", "two point five": "two point five", "three": 3}
3.3 ensure_ascii
如果设置为 True
,则所有非 ASCII 字符将会被转义为类似于 \uXXXX
的形式。如果设置为 False
,则可以保留非 ASCII 字符。默认情况下,该参数为 True
。
示例:
import json
data = {'name': '张三', 'age': 20}
result = json.dumps(data, ensure_ascii=False)
print(result)
输出结果:
{"name": "张三", "age": 20}
3.4 check_circular
如果设置为 False
,则可以跳过对循环引用的检查,从而提高性能。默认情况下,该参数为 True
。
3.5 allow_nan
如果设置为 False
,则会禁止将浮点数 NaN 和 Infinity 编码为 JSON 格式。默认情况下,该参数为 True
,即允许编码 NaN 和 Infinity。
3.6 cls
用于指定自定义的 JSON 编码器(如果不是默认的 JSONEncoder
)。该参数需要是一个自定义的 JSONEncoder 子类。
3.7 indent
用于指定 JSON 字符串的缩进格式。如果为 None
,则表示不使用缩进,输出为紧凑格式。如果为一个整数,则表示使用该个数的空格进行缩进。默认情况下,该参数为 None
。
示例:
import json
data = {'name': '张三', 'age': 20}
result = json.dumps(data, indent=4)
print(result)
输出结果:
{
"name": "张三",
"age": 20
}
3.8 separators
用于指定生成 JSON 字符串时的分隔符。该参数应为一个包含两个字符的字符串,第一个字符表示键和值之间的分隔符,第二个字符表示不同键值对之间的分隔符。
示例:
import json
data = {'name': '张三', 'age': 20}
result = json.dumps(data, separators=(',', ':'))
print(result)
输出结果:
{"name":"张三","age":20}
3.9 default
用于指定一个自定义的函数,对于无法被 JSON 序列化的对象进行处理。该函数应返回一个可被 JSON 序列化的对象,否则会抛出 TypeError
。默认情况下,该参数为 None
。
3.10 sort_keys
如果设置为 True
,则会按照键的大小对输出进行排序。默认情况下,该参数为 False
。
示例:
import json
data = {'c': 1, 'a': 2, 'b': 3}
result = json.dumps(data, sort_keys=True)
print(result)
输出结果:
{"a": 2, "b": 3, "c": 1}
4. 总结
本文介绍了 json.dumps()
方法的参数及其用法,包括了 skipkeys
、ensure_ascii
、check_circular
、allow_nan
、cls
、indent
、separators
、default
和 sort_keys
等参数的作用。通过灵活运用这些参数,可以更好地控制 JSON 字符串的生成过程。