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

复制代码
相关推荐
YJlio6 小时前
VolumeID 学习笔记(13.10):卷序列号修改与资产标识管理实战
windows·笔记·学习
Xの哲學6 小时前
Linux SMP 实现机制深度剖析
linux·服务器·网络·算法·边缘计算
知识分享小能手7 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04的Linux网络配置(14)
linux·学习·ubuntu
皇族崛起7 小时前
【视觉多模态】- scannet 数据的 Ubuntu 百度网盘全速下载
linux·ubuntu·3d建模·dubbo
CAU界编程小白7 小时前
Linux系统编程系列之进程控制(下)
linux·进程控制
‿hhh7 小时前
综合交通运行协调与应急指挥平台项目说明
java·ajax·npm·json·需求分析·个人开发·规格说明书
RisunJan8 小时前
Linux命令-ifconfig命令(配置和显示网络接口的信息)
linux·运维·服务器
LaoWaiHang8 小时前
Linux基础知识04:pwd命令与cd命令
linux
lbb 小魔仙8 小时前
【Linux】100 天 Linux 入门:从命令行到 Shell 脚本,告别“光标恐惧”
linux·运维·服务器
小张成长计划..9 小时前
【Linux】1:基本指令
linux