json.dumps()包含的参数

1、check_circular

类型:布尔值

默认:True

作用:如果为 True,则在序列化时检查循环引用并抛出 ValueError。如果为 False,则不检查循环引用(不推荐关闭此选项,以避免无限递归)。

python 复制代码
    import json

    data = {}
    data['self'] = data  # 创建循环引用

    try:
        json.dumps(data)
    except ValueError as e:
        print(f"Caught an error: {e}")
    # 输出:Caught an error: Circular reference detected
    ```

2、allow_nan

类型:布尔值

默认:True

作用:如果为 True,序列化 float('NaN'), float('Infinity')float('-Infinity') 为对应的 JSON 值 NaN, Infinity-Infinity。如果为 False,则会引发 ValueError

python 复制代码
    import json

    data = {"value": float("inf")}
    
    try:
        json.dumps(data, allow_nan=False)
    except ValueError as e:
        print(f"Caught an error: {e}")
    # 输出:Caught an error: Out of range float values are not JSON compliant
    ```

3、cls

类型:JSONEncoder 的子类

作用:指定一个自定义的 JSONEncoder 子类来进行序列化。

python 复制代码
    import json

    class CustomEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, set):
                return list(obj)
            return super().default(obj)

    data = {"tags": {"python", "coding"}}
    json_str = json.dumps(data, cls=CustomEncoder)
    print(json_str)
    # 输出:{"tags": ["coding", "python"]}
    ```

4、default

类型:函数

作用:当 json.dumps() 遇到无法序列化的对象时,会调用此函数。此函数应返回一个可序列化的对象。

python 复制代码
    import json
    import datetime

    def default_handler(obj):
        if isinstance(obj, datetime.datetime):
            return obj.isoformat()
        raise TypeError(f"Object of type {type(obj)} is not JSON serializable")

    data = {"time": datetime.datetime.now()}
    json_str = json.dumps(data, default=default_handler)
    print(json_str)
    # 输出:{"time": "2023-10-05T12:00:00"}
    ```

5、separators

类型:元组 (item_separator, key_separator)

默认:(',', ': ')

作用:控制项目分隔符和键-值分隔符。默认值会在键和值之间添加一个空格,使 JSON 更具可读性。

python 复制代码
import json 
data = {"name": "Alice", "age": 30} 
json_str = json.dumps(data, separators=(',', ':')) 
print(json_str) # 输出:{"name":"Alice","age":30} ```

6、sort_keys

类型:布尔值

默认:False

作用:如果为 True,则按字母顺序对字典的键进行排序。

python 复制代码
import json 
data = {"b": 1, "a": 2, "c": 3} 
json_str = json.dumps(data, sort_keys=True) 
print(json_str) 
# 输出:{"a": 2, "b": 1, "c": 3} ```

7、indent

类型:整数或字符串

作用:设置缩进的字符数或字符。为 None时表示没有缩进;为整数时表示每层的空格数;为字符串时表示每层的这个字符串。

python 复制代码
import json 
data = {"name": "Alice", "age": 30} 
json_str = json.dumps(data, indent=4) 
print(json_str) 
# 输出: # { # "name": "Alice", # "age": 30 # } ```

8、ensure_ascii

类型:布尔值

默认:True

作用:如果为 True,则将非ASCII字符转义为 \uXXXX 形式。如果为 False,则输出原始字符。

python 复制代码
import json 
data = {"name": "张三"} 
json_str = json.dumps(data, ensure_ascii=False) 
print(json_str) 
# 输出:{"name": "张三"} ```

9、sort_keys

类型:布尔值

默认:False

python 复制代码
import json 
data = {"b": 1, "a": 2, "c": 3} 
json_str = json.dumps(data, sort_keys=True) 
print(json_str) 
# 输出:{"a": 2, "b": 1, "c": 3} ```

作用:如果为 True,则按字母顺序对字典的键进行排序。

复制代码
相关推荐
醇氧1 天前
【Windows】优雅启动:解析一个 Java 服务的后台启动脚本
java·开发语言·windows
石像鬼₧魂石1 天前
如何配置Fail2Ban的Jail?
linux·学习·ubuntu
未来魔导1 天前
go语言中json操作总结
数据分析·go·json
椰子今天很可爱1 天前
五种I/O模型与多路转接
linux·c语言·c++
Lueeee.1 天前
Linux kernel Makefile 语法
linux
小小代码团1 天前
2026 Office Online Server (全网最新/最详细/含问题修复) 终极部署教程
windows·microsoft·c#
爱吃山竹的大肚肚1 天前
EasyPOI 大数据导出
java·linux·windows
极地星光1 天前
dmesg 工具的核心功能与作用
linux
公子无缘1 天前
【Windows】关闭Windows Update自动更新2
windows
福尔摩斯张1 天前
C++核心特性精讲:从C语言痛点出发,掌握现代C++编程精髓(超详细)
java·linux·c语言·数据结构·c++·驱动开发·算法