json.dumps()
是 Python 的 json
模块中一个非常重要的函数,它用于将 Python 对象序列化为 JSON 格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于 Web 应用程序中数据的传输。
使用 json.dumps()
在使用 json.dumps()
函数之前,必须先导入 json
模块。基本的语法如下:
import json
json_string = json.dumps(obj, **kwargs)
其中,obj
是你想要序列化的 Python 对象,**kwargs
允许你传递一些可选参数,用于控制序列化的行为。
常用参数
-
skipkeys
:如果设置为 True,则允许字典中的键不是基本类型(如字符串、数字、布尔值和 None),否则会抛出 TypeError。 -
ensure_ascii
:默认为 True,表示所有非 ASCII 字符都会被转义。如果设置为 False,输出的 JSON 字符串将包含原始的 Unicode 字符。 -
check_circular
:默认为 True,表示检查循环引用。 -
allow_nan
:默认为 True,表示支持 NaN 和 Infinity 等特殊浮点值。如果设置为 False,则会抛出 ValueError。 -
indent
:用于指定缩进的空格数,以实现美观的格式化输出。如果指定为非负整数,则输出的 JSON 字符串将使其每层缩进。 -
separators
:用来定制分隔符的元组,形如 (item_separator
,key_separator
)。 -
default
:可以指定一个函数,用于处理无法序列化的对象。
示例
下面是一些使用 json.dumps()
函数的示例。
示例 1: 基本用法
import json
data = {
"name": "张三",
"age": 25,
"is_student": False,
"score": None
}
json_string = json.dumps(data)
print(json_string) # 输出:{"name": "张三", "age": 25, "is_student": false, "score": null}
示例 2: 使用 ensure_ascii
参数
data = {
"city": "北京",
"population": 21500000
}
# 默认情况下,中文字符会被转义
json_string_ascii = json.dumps(data)
print(json_string_ascii) # 输出:{"city": "\u5317\u4eac", "population": 21500000}
# 设置 ensure_ascii 为 False,可以输出原始字符
json_string_unicode = json.dumps(data, ensure_ascii=False)
print(json_string_unicode) # 输出:{"city": "北京", "population": 21500000}
示例 3: 使用 indent
参数进行格式化输出
data = {
"name": "李四",
"age": 30,
"hobbies": ["阅读", "旅行", "编程"]
}
json_string_pretty = json.dumps(data, indent=4, ensure_ascii=False)
print(json_string_pretty)
输出:
{
"name": "李四",
"age": 30,
"hobbies": [
"阅读",
"旅行",
"编程"
]
}
示例 4: 处理自定义对象
通常情况下,一些自定义对象无法被直接序列化为 JSON 格式,此时可以使用 default
参数来指定序列化的方法。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def person_to_dict(person):
return {
"name": person.name,
"age": person.age
}
person = Person("王五", 40)
json_string = json.dumps(person, default=person_to_dict)
print(json_string) # 输出:{"name": "王五", "age": 40}
总结
json.dumps()
函数是 Python 在处理 JSON 数据时非常强大的工具。通过使用该函数,我们能够轻松地将各种 Python 对象转化为 JSON 字符串,并且其灵活的参数设置使得开发者能够根据实际需求调整序列化的行为。无论是在 Web 开发还是在数据交换中,掌握 json.dumps()
的用法都非常重要。