orjson:Python 最快的 JSON 库 文章目录orjsonPython 最快的 JSON 库orjsonPython 最快的 JSON 库orjson 是一款高性能 Python JSON 库目前获得 8,098 个 Star。orjson 的核心优势在于速度。它的序列化速度比 Python 标准库 json 快约 10 倍反序列化速度约 2 倍。同时orjson 对 UTF-8 和 RFC 8259 的兼容性比标准库更严格。在类型支持上orjson 原生序列化 dataclass、datetime、numpy.ndarray 和 UUID 等实例不需要自定义转换函数。对于常规类型如 str、dict、list、tuple、int、float、bool 和 None 也都直接支持。orjson 通过 Rust 实现底层逻辑并提供多种序列化选项控制输出格式。用户可以通过 option 参数组合多个标志位常用的包括 OPT_NAIVE_UTC将无时区 datetime 视为 UTC、OPT_SERIALIZE_NUMPY原生序列化 numpy 数组、OPT_INDENT_2输出格式化缩进、OPT_SORT_KEYS按键排序、OPT_NON_STR_KEYS允许非字符串字典键等。序列化失败时orjson 抛出 JSONEncodeError提示不可序列化的具体类型。该异常继承自 TypeError与标准库行为保持一致。循环引用、超深递归超过 254 层、无效 UTF-8 字符串、以及不支持的 tzinfo 时区信息都会触发此异常。安装 orjson 直接通过 pip 即可pip install orjson在 requirements.txt 中建议指定版本范围orjson 3.10,4基本用法与标准库 json 类似importorjson,datetime data{type:job,created_at:datetime.datetime(1970,1,1),}# 序列化resultorjson.dumps(data,optionorjson.OPT_NAIVE_UTC)# 反序列化parsedorjson.loads(result)orjson.dumps 返回 bytes 对象而非 str这是与标准库 json 的主要差异。需要字符串时可自行解码。对于自定义类型orjson 提供 default 参数。该参数接收一个可调用对象返回 orjson 支持的类型即可importorjson,decimaldefdefault(obj):ifisinstance(obj,decimal.Decimal):returnstr(obj)raiseTypeError orjson.dumps(decimal.Decimal(0.084),defaultdefault)orjson 支持 CPython 3.10 到 3.15提供多平台预编译 wheel。Linux 支持 amd64、i686、aarch64、arm7、ppc64le 和 s390x 架构macOS 支持 amd64 和 aarch64Windows 支持 amd64、i686 和 aarch64。amd64 wheel 在 x86-64-v1 及以上平台运行并在支持 AVX-512 的硬件上获得额外性能提升。从标准库 json 迁移到 orjson 时需要注意几个差异点。orjson.dumps 返回 bytes 对象而非 str若需要字符串需手动解码。标准库的 sort_keys 参数在 orjson 中替换为 OPT_SORT_KEYSindent 替换为 OPT_INDENT_2且 orjson 仅支持 2 空格缩进。ensure_ascii 在 orjson 中不存在UTF-8 字符不会被转义为 ASCII。orjson 不兼容 PyPy、Android 和 iOS 嵌入式 Python 构建。该项目遵循语义化版本发布代码采用 MPL 2.0、Apache 2.0 和 MIT 多许可证分发。嵌入式 Python 构建。该项目遵循语义化版本发布代码采用 MPL 2.0、Apache 2.0 和 MIT 多许可证分发。