在 Python 与外部系统进行数据交互时,将字典、列表等 Python 原生数据结构转换为 JSON 格式字符串是高频需求,而json.dumps()正是实现这一序列化过程的核心函数。它不仅能完成基础的类型转换,还支持丰富的可选参数,可自定义序列化规则,适配美化输出、非 ASCII 字符处理、循环引用检查等多样化场景。掌握json.dumps()的参数用法、返回值规则及使用注意事项,是实现 Python 对象高效序列化的关键。接下来,我们将全面拆解该函数的功能、参数、示例及核心要点。
json.dumps() 是Python标准库 json 模块中的一个函数,用于将Python对象编码(序列化)成JSON格式的字符串。这个过程是序列化的一部分,即将数据从一种格式(在这个情况下是Python的数据结构,如字典或列表)转换成另一种格式(在这个情况下是JSON字符串)。
obj (any): 要编码的Python对象。它通常是字典(对应于JSON对象)或列表(对应于JSON数组),但也可以是其他类型,如字符串、数字、布尔值、None等。
skipkeys (bool, optional): 默认为False。如果字典的键不是基本类型(即str, int, float, bool, None),则设置为True可以跳过这些键;否则将引发TypeError。
ensure_ascii (bool, optional): 默认为True。如果设置为False,则尝试将非ASCII字符(如中文)输出为\uXXXX形式的Unicode转义字符之外的字符。请注意,这可能会产生不可读的输出在非ASCII平台的print函数中,因为print函数 可能会使用系统默认的编码来解码字节字符串。在Python 3.x中,字符串是Unicode的,所以这个选项主要影响字节字符串的输出。
check_circular (bool, optional): 默认为True。如果设置为False,则跳过对容器类型的循环引用的检查(这可能会引发OverflowError)。
allow_nan (bool, optional): 默认为True。如果设置为False,则序列化过程中会将浮点数中的NaN、Infinity和-Infinity转换为null。
sort_keys (bool, optional): 默认为False。如果设置为True,则字典的键会按照键的Unicode码点排序。
indent (int or str, optional): 如果指定为整数,则使用指定的缩进级别来美化输出的JSON字符串。如果指定为字符串(如\t),则使用该字符串作为缩进字符。
separators (tuple, optional): 一个(item_separator, key_separator)元组,用于指定分隔符。默认为(', ', ‘: ‘)。如果指定为(’,’, ‘:’),则输出的字符串会更紧凑。
default (function, optional): 一个函数,用于将不可序列化的对象转换为一个可序列化的表示。默认情况下,不可序列化的对象会引发TypeError。 *, **kwargs: 其他可选参数,用于进一步定制序列化行为。
str: 编码后的JSON格式的字符串。

json.dumps()作为 Python 实现对象序列化的核心函数,其灵活的参数配置能适配各类序列化需求 —— 从基础的类型转换,到美化输出、非 ASCII 字符处理、循环引用检查等定制化操作,都能通过参数精准控制。使用时需注意数据类型的转换规则,针对自定义对象需配置 default 函数,同时区分dumps()(生成字符串)与dump()(写入文件)的差异。熟练运用该函数,能让 Python 程序高效生成符合规范的 JSON 字符串,满足前后端交互、数据存储等多场景需求。
正在加载... ...