Python json.dumps() 全解析

🕒 2025-12-29 15:23:28
📁 JSON学习教程
作者:JSONLA小编

在 Python 与外部系统进行数据交互时,将字典、列表等 Python 原生数据结构转换为 JSON 格式字符串是高频需求,而json.dumps()正是实现这一序列化过程的核心函数。它不仅能完成基础的类型转换,还支持丰富的可选参数,可自定义序列化规则,适配美化输出、非 ASCII 字符处理、循环引用检查等多样化场景。掌握json.dumps()的参数用法、返回值规则及使用注意事项,是实现 Python 对象高效序列化的关键。接下来,我们将全面拆解该函数的功能、参数、示例及核心要点。

json.dumps()

 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字符串使用双引号(")来包围键和字符串值。
  • Python中的布尔值 True 和 False 会被转换成JSON中的 true 和 false。
  • Python中的 None 会被转换成JSON中的 null。
  • 如果Python对象包含无法直接转换成JSON的类型(如自定义对象),则可以使用default参数来提供一个自定义的序列化函数。
  • json.dumps() 不会直接写入文件;要将JSON字符串写入文件,请使用json.dump()方法。

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













相关推荐

正在加载... ...