Python json.dumps用法介绍

Python json.dumps用法介绍

Python json.dumps用法介绍

介绍

Python 是一种功能强大且易于学习的编程语言,它提供了许多处理数据的内置库。其中,json 是一个重要的模块,它用于处理 JSON(JavaScript Object Notation)格式的数据。json.dumps()json 模块中的一个函数,用于将 Python 对象转换成 JSON 字符串。本文将详细介绍 json.dumps 函数的用法和示例。

什么是 JSON

JSON 是一种常用的数据交换格式,它以易于理解和生成的方式来表示结构化数据。JSON 格式经常用于跨平台、跨语言的数据交互。在 Python 中,JSON 数据通常表示为字典和列表的组合。

JSON 由以下部分组成:

  • 对象(Object):由键值对组成,其中的键是字符串,值可以是字符串、数字、布尔值、数组、其他对象或 null。
  • 数组(Array):由值的有序列表组成,值可以是字符串、数字、布尔值、对象、数组或 null。
  • 值(Value):表示字符串、数字、布尔值、对象、数组或 null。
  • 字符串(String):由双引号包围的零个或多个字符组成。
  • 数字(Number):表示整数或浮点数。
  • 布尔值(Boolean):表示真或假。
  • null:表示空值。

以下是一个简单的 JSON 示例:

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "hobbies": ["reading", "coding", "traveling"],
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "state": "NY"
  },
  "isEmployed": null
}

json.dumps() 函数的用法

json.dumps() 函数用于将 Python 对象转换成 JSON 字符串。它接受一个必需的参数 obj,该参数可以是 Python 内置数据类型(如字典、列表、字符串、数字、布尔值和空值)或自定义的类对象。该函数还接受一些可选的参数,用于自定义 JSON 字符串的格式。

基本语法

下面是 json.dumps() 函数的基本语法:

json_str = 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)

obj 参数是要转换成 JSON 字符串的 Python 对象。

参数说明

以下是 json.dumps() 函数的一些常用参数的说明:

  • skipkeys:如果设置为 True,则字典键中的非字符串类型将被跳过,否则会引发 TypeError。默认为 False
  • ensure_ascii:如果设置为 True,则输出的 JSON 字符串中的所有非 ASCII 字符会被转义为 Unicode 转义序列,否则将按原样输出。默认为 True
  • check_circular:如果设置为 False,则允许循环引用(即对象之间相互引用),否则将引发 TypeError。默认为 True
  • allow_nan:如果设置为 False,则禁止使用 NaN、Infinity 和 -Infinity,否则将引发 ValueError。默认为 True
  • cls:用于编码自定义对象的编码器类。默认为 None
  • indent:用于缩进输出的字符串。如果设置为非负整数,则输出将格式化为具有指定缩进级别的漂亮打印的字符串。默认为 None
  • separators:用于分隔项的字符串。该参数应为一个 (item_separator, key_separator) 元组。默认为 (', ', ': ')
  • default:用于在对象中找不到可序列化的对象时将其转换为可序列化对象的函数。默认为 None
  • sort_keys:如果设置为 True,则输出的 JSON 字符串将按键的顺序排序。默认为 False

返回值

json.dumps() 函数返回一个表示给定 Python 对象的 JSON 字符串。

示例

以下将展示 json.dumps() 函数的一些示例,以及它们的运行结果。

示例 1:基本用法

下面是一个基本用法的示例,将一个 Python 字典对象转换为 JSON 字符串:

import json

# 创建一个 Python 字典
person = {
    "name": "John",
    "age": 30,
    "isStudent": False,
    "hobbies": ["reading", "coding", "traveling"],
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY"
    },
    "isEmployed": None
}

# 将字典对象转换为 JSON 字符串
json_str = json.dumps(person)

print(json_str)

运行结果:

{"name": "John", "age": 30, "isStudent": false, "hobbies": ["reading", "coding", "traveling"], "address": {"street": "123 Main St", "city": "New York", "state": "NY"}, "isEmployed": null}

在上面的示例中,我们创建了一个包含个人信息的字典对象 person,然后使用 json.dumps() 函数将其转换为相应的 JSON 字符串,并将其打印出来。可以看到,JSON 字符串中的键和值与原始字典对象中的键和值相对应。

示例 2:使用 indent 参数美化输出

json.dumps() 函数的 indent 参数用于缩进输出的字符串,可以使 JSON 字符串更易读。

import json

# 创建一个 Python 字典
person = {
    "name": "John",
    "age": 30,
    "isStudent": False,
    "hobbies": ["reading", "coding", "traveling"],
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY"
    },
    "isEmployed": None
}

# 将字典对象转换为具有缩进的 JSON 字符串
json_str = json.dumps(person, indent=4)

print(json_str)

运行结果:

{
    "name": "John",
    "age": 30,
    "isStudent": false,
    "hobbies": [
        "reading",
        "coding",
        "traveling"
    ],
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY"
    },
    "isEmployed": null
}

在上面的示例中,我们使用 json.dumps() 函数将字典对象 person 转换为具有缩进的 JSON 字符串,并将其打印出来。可以看到,JSON 字符串中的键和值已经按照指定的缩进级别进行了格式化,使其更易读。

示例 3:使用 sort_keys 参数排序键

json.dumps() 函数的 sort_keys 参数可以用于按键的顺序对 JSON 字符串进行排序。

import json

# 创建一个 Python 字典
person = {
    "name": "John",
    "age": 30,
    "isStudent": False,
    "hobbies": ["reading", "coding", "traveling"],
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY"
    },
    "isEmployed": None
}

# 将字典对象转换为具有排序键的 JSON 字符串
json_str = json.dumps(person, sort_keys=True)

print(json_str)

运行结果:

{"address": {"city": "New York", "state": "NY", "street": "123 Main St"}, "age": 30, "hobbies": ["reading", "coding", "traveling"], "isEmployed": null, "isStudent": false, "name": "John"}

在上面的示例中,我们使用 json.dumps() 函数将字典对象 person 转换为具有排序键的 JSON 字符串,并将其打印出来。可以看到,JSON 字符串中的键按字母顺序排列。

示例 4:处理自定义类对象

json.dumps() 函数可以处理自定义类对象,只需提供一个自定义类的编码器。

import json

# 创建一个自定义类对象
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 创建一个自定义类对象的实例
person = Person("John", 30)

# 自定义类的编码器
class PersonEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Person):
            return {
                "name": obj.name,
                "age": obj.age
            }
        return super().default(obj)

# 将自定义类对象转换为 JSON 字符串
json_str = json.dumps(person, cls=PersonEncoder)

print(json_str)

运行结果:

{"name": "John", "age": 30}

在上面的示例中,我们创建了一个自定义类对象 Person,并创建了该类对象的实例 person。然后,我们定义了类 PersonEncoder 作为自定义类 Person 的编码器,其中重写了 default 方法来控制对象的编码。最后,我们使用 json.dumps() 函数将自定义类对象转换为 JSON 字符串,并将其打印出来。可以看到,只有自定义类对象的属性被编码为 JSON 字符串。

结论

本文详细介绍了 json.dumps() 函数的用法和示例。你学到了如何使用 json.dumps() 函数将 Python 对象转换为 JSON 字符串,并了解了一些常用的参数。通过合理使用 json.dumps() 函数,你可以方便地在 Python 中处理和操作 JSON 格式的数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程