Python json.dumps 参数详解

Python json.dumps 参数详解

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() 方法的参数及其用法,包括了 skipkeysensure_asciicheck_circularallow_nanclsindentseparatorsdefaultsort_keys 等参数的作用。通过灵活运用这些参数,可以更好地控制 JSON 字符串的生成过程。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程