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

复制代码
相关推荐
懂点Tech2 小时前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
qq_401700414 小时前
Linux设备树详解
linux·运维·服务器
云梦谭4 小时前
让 Linux 主动连接 Windows:配置 Windows 11 SSH 服务端
linux·windows·ssh
奇树谦4 小时前
Windows CMD 下 mc 运维指南:SeaweedFS 安装验收与 MinIO 数据迁移
运维·windows
刚入门的大一新生5 小时前
Linux-信号
linux·运维·服务器
keren29 小时前
SceneDock:Windows 场景化工作台——一键启动工作链,还能被 AI Agent 调用(CLI / MCP)
windows·开发工具·效率工具·mcp
GeW9 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux
mounter6259 小时前
深入理解 gccrs:GCC 如何实现 Rust 编译器,以及编译 Linux 内核面临的挑战
linux·驱动开发·rust
垚垚学技术_聚焦云原生9 小时前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
无足鸟ICT10 小时前
【RHCA+】type命令(判断命令类型)
linux·ssh·bash