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

复制代码
相关推荐
JenKinJia13 分钟前
linux下编译Websocketpp,适用x86和armv8
linux·运维·服务器
程序员JerrySUN31 分钟前
深入解析嵌入式Linux系统架构:从Bootloader到用户空间
linux·运维·驱动开发·嵌入式硬件·系统架构
czhc114007566343 分钟前
LINUX 5 cat du head tail wc 计算机拓扑结构 计算机网络 服务器 计算机硬件
linux·服务器·计算机网络
AR71 小时前
Linux与Windows跨平台文件共享实现
linux
暮云星影1 小时前
附录:LInux编辑器学习笔记
linux·学习·编辑器
什么半岛铁盒1 小时前
深入解析Linux软硬链接:原理、区别与应用实践
linux
晴空๓2 小时前
在CentOS上安装Docker需要注意的事项
linux·docker·centos
_清风来叙2 小时前
【U-Boot】解决U-Boot的“Unknown command ‘help‘ - try ‘help‘”问题
linux
University of Feriburg2 小时前
1-linux的基础知识
linux·笔记·学习·嵌入式实时数据库·嵌入式软件·初学者
搜搜秀2 小时前
linux (CentOS 10)使用传统程序语言(C)进行编译---主,子程序连接:子程序的编译
linux·c语言·centos