PythonJSON编码/解码库orjson的用法详解

作者:

文章目录
  • 极高性能: 比标准库 json 快 10~100 倍(尤其在大数据量时)。 反序列化速度超过 ujson,序列化速度接近 Rust/C 原生水平。 内存高效: 直接处理 bytes 而非 str,减少内存分配。 严格符合标准: 符合 RFC 8259 和 ECMA-404 标准。 无 GIL 阻塞: 在序列化/反序列化时释放 GIL,支持并发。
  • pip install orjson 要求:Python ≥ 3.7(支持 Linux/macOS/Windows)。
  • import timeit import orjson import json data = {“value”: [i for i in range(10000)]} # orjson 速度测试 t_orjson = timeit.timeit(lambda: orjson.dumps(data), number=1000) # 标准库速度测试 t_stdlib = timeit.timeit(lambda: json.dumps(data), number=1000) print(f”orjson: {t_orjson:.4f} sec”) print(f”json: {t_stdlib:.4f} sec”) 典型结果: orjson: 0.02 sec json: 0.25 sec # 慢 10 倍以上
  • 高吞吐量服务:API 服务器、微服务。 大数据处理:快速解析大型 JSON 文件。 科学计算:无缝集成 NumPy/Pandas。 替代 json:追求极致性能的通用场景。
  • 输出类型: dumps() 返回 bytes(非字符串),需手动解码为 str。 键排序: 默认不排序键,需用 option=orjson.OPT_SORT_KEYS。 错误处理: 无效输入直接抛出 orjson.JSONDecodeError。
  • orjson 是 Python 生态中性能最强的 JSON 库,适用于对速度要求严苛的场景。其特点包括: 极速的序列化/反序列化 原生支持日期、UUID、NumPy 等类型 内存高效且线程安全 到此这篇关于Python JSON编码/解码库orjson的用法详解的文章就介绍到这了,更多相关Python orjson库用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python中最好用的json库orjson用法详解 Python中JSON库详细介绍与代码示例详解 Python中利用json库进行JSON数据处理详解 全面掌握Python JSON库函数与方法学会JSON数据处理 Python中的json库常用方法示例详解
  • 目录
    • 核心优势
    • 安装
    • 基本用法
      • 1. 序列化(Python 对象 → JSON)
      • 2. 反序列化(JSON → Python 对象)
    • 高级特性
      • 1. 处理复杂数据类型
      • 2. 自定义选项
      • 3. 处理非 UTF-8 数据
    • 性能对比示例
      • 使用场景推荐
        • 注意事项
          • 总结

            1. 极高性能
              • 比标准库 json10~100 倍(尤其在大数据量时)。
              • 反序列化速度超过 ujson,序列化速度接近 Rust/C 原生水平。
            2. 内存高效
              • 直接处理 bytes 而非 str,减少内存分配。
            3. 严格符合标准
              • 符合 RFC 8259 和 ECMA-404 标准。
            4. 无 GIL 阻塞
              • 在序列化/反序列化时释放 GIL,支持并发。

            pip install orjson
            

            要求:Python ≥ 3.7(支持 Linux/macOS/Windows)。

            import orjson
            
            data = {
                "name": "Alice",
                "age": 30,
                "hobbies": ["coding", "hiking"],
                "is_active": True
            }
            
            # 序列化为 bytes
            json_bytes = orjson.dumps(data)
            print(json_bytes)  # b'{"name":"Alice","age":30,...}'
            
            # 可选:转为字符串
            json_str = json_bytes.decode("utf-8")
            

            json_data = b'{"name": "Bob", "score": 95.5}'
            
            # 直接解析 bytes
            parsed = orjson.loads(json_data)
            print(parsed["name"])  # "Bob"
            

            orjson 原生支持更多类型:

            from datetime import datetime, timezone
            from uuid import uuid4
            
            data = {
                "id": uuid4(),  # UUID 对象
                "created_at": datetime.now(timezone.utc)  # 时区-aware datetime
            }
            
            # 直接序列化(无需自定义转换)
            json_bytes = orjson.dumps(data)
            

            通过 option 参数启用扩展功能:

            json_bytes = orjson.dumps(
                data,
                option=orjson.OPT_NAIVE_UTC |   # 将无时区 datetime 视为 UTC
                       orjson.OPT_SERIALIZE_NUMPY |  # 支持 numpy 数组
                       orjson.OPT_SORT_KEYS     # 按键排序输出
            )
            

            # 序列化非 UTF-8 字符串(如 latin-1)
            data = {"text": "café".encode("latin-1")}
            json_bytes = orjson.dumps(data)  # 自动处理
            

            import timeit
            import orjson
            import json
            
            data = {"value": [i for i in range(10000)]}
            
            # orjson 速度测试
            t_orjson = timeit.timeit(lambda: orjson.dumps(data), number=1000)
            
            # 标准库速度测试
            t_stdlib = timeit.timeit(lambda: json.dumps(data), number=1000)
            
            print(f"orjson: {t_orjson:.4f} sec")
            print(f"json:   {t_stdlib:.4f} sec")
            

            典型结果

            orjson: 0.02 sec
            json:   0.25 sec  # 慢 10 倍以上
            

            1. 高吞吐量服务:API 服务器、微服务。
            2. 大数据处理:快速解析大型 JSON 文件。
            3. 科学计算:无缝集成 NumPy/Pandas。
            4. 替代 json:追求极致性能的通用场景。

            1. 输出类型
              • dumps() 返回 bytes(非字符串),需手动解码为 str
            2. 键排序
              • 默认不排序键,需用 option=orjson.OPT_SORT_KEYS
            3. 错误处理
              • 无效输入直接抛出 orjson.JSONDecodeError

            orjson 是 Python 生态中性能最强的 JSON 库,适用于对速度要求严苛的场景。其特点包括:

            • 极速的序列化/反序列化
            • 原生支持日期、UUID、NumPy 等类型
            • 内存高效且线程安全

            到此这篇关于Python JSON编码/解码库orjson的用法详解的文章就介绍到这了,更多相关Python orjson库用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

            您可能感兴趣的文章:

            • Python中最好用的json库orjson用法详解
            • Python中JSON库详细介绍与代码示例详解
            • Python中利用json库进行JSON数据处理详解
            • 全面掌握Python JSON库函数与方法学会JSON数据处理
            • Python中的json库常用方法示例详解

            站内搜索