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,则按字母顺序对字典的键进行排序。

复制代码
相关推荐
maosheng11462 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken3 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.2913 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C3 小时前
CPU Cache
linux·cache
Hoshino.414 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
播播资源6 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
小涛不学习6 小时前
手写线程池(从0实现 ThreadPoolExecutor 核心思想)
windows
源远流长jerry6 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
twc8296 小时前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
lay_liu6 小时前
Linux安装redis
linux·运维·redis