亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python JSON編碼/解碼庫orjson的用法詳解

 更新時間:2025年07月08日 10:34:47   作者:老胖閑聊  
orjson是一個高性能的JSON編碼/解碼庫,專為Python設(shè)計,使用Rust實現(xiàn),相比標(biāo)準(zhǔn)庫的json模塊和其他第三方庫(如 ujson、simplejson),orjson在速度上有顯著優(yōu)勢,同時支持更豐富的原生數(shù)據(jù)類型,本文通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下

核心優(yōu)勢

  1. 極高性能
    • 比標(biāo)準(zhǔn)庫 json10~100 倍(尤其在大數(shù)據(jù)量時)。
    • 反序列化速度超過 ujson,序列化速度接近 Rust/C 原生水平。
  2. 內(nèi)存高效
    • 直接處理 bytes 而非 str,減少內(nèi)存分配。
  3. 嚴(yán)格符合標(biāo)準(zhǔn)
    • 符合 RFC 8259 和 ECMA-404 標(biāo)準(zhǔn)。
  4. 無 GIL 阻塞
    • 在序列化/反序列化時釋放 GIL,支持并發(fā)。

安裝

pip install orjson

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

基本用法

1. 序列化(Python 對象 → JSON)

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,...}'

# 可選:轉(zhuǎn)為字符串
json_str = json_bytes.decode("utf-8")

2. 反序列化(JSON → Python 對象)

json_data = b'{"name": "Bob", "score": 95.5}'

# 直接解析 bytes
parsed = orjson.loads(json_data)
print(parsed["name"])  # "Bob"

高級特性

1. 處理復(fù)雜數(shù)據(jù)類型

orjson 原生支持更多類型:

from datetime import datetime, timezone
from uuid import uuid4

data = {
    "id": uuid4(),  # UUID 對象
    "created_at": datetime.now(timezone.utc)  # 時區(qū)-aware datetime
}

# 直接序列化(無需自定義轉(zhuǎn)換)
json_bytes = orjson.dumps(data)

2. 自定義選項

通過 option 參數(shù)啟用擴展功能:

json_bytes = orjson.dumps(
    data,
    option=orjson.OPT_NAIVE_UTC |   # 將無時區(qū) datetime 視為 UTC
           orjson.OPT_SERIALIZE_NUMPY |  # 支持 numpy 數(shù)組
           orjson.OPT_SORT_KEYS     # 按鍵排序輸出
)

3. 處理非 UTF-8 數(shù)據(jù)

# 序列化非 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)

# 標(biāo)準(zhǔn)庫速度測試
t_stdlib = timeit.timeit(lambda: json.dumps(data), number=1000)

print(f"orjson: {t_orjson:.4f} sec")
print(f"json:   {t_stdlib:.4f} sec")

典型結(jié)果

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

使用場景推薦

  1. 高吞吐量服務(wù):API 服務(wù)器、微服務(wù)。
  2. 大數(shù)據(jù)處理:快速解析大型 JSON 文件。
  3. 科學(xué)計算:無縫集成 NumPy/Pandas。
  4. 替代 json:追求極致性能的通用場景。

注意事項

  1. 輸出類型
    • dumps() 返回 bytes(非字符串),需手動解碼為 str。
  2. 鍵排序
    • 默認(rèn)不排序鍵,需用 option=orjson.OPT_SORT_KEYS。
  3. 錯誤處理
    • 無效輸入直接拋出 orjson.JSONDecodeError

總結(jié)

orjson 是 Python 生態(tài)中性能最強的 JSON 庫,適用于對速度要求嚴(yán)苛的場景。其特點包括:

  • 極速的序列化/反序列化
  • 原生支持日期、UUID、NumPy 等類型
  • 內(nèi)存高效且線程安全

到此這篇關(guān)于Python JSON編碼/解碼庫orjson的用法詳解的文章就介紹到這了,更多相關(guān)Python orjson庫用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解python的運算符與表達(dá)式

    詳解python的運算符與表達(dá)式

    這篇文章主要為大家介紹了python的運算符與表達(dá)式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python如何保證輸入鍵入數(shù)字的方法

    python如何保證輸入鍵入數(shù)字的方法

    今天小編就為大家分享一篇python如何保證輸入鍵入數(shù)字的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼

    詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼

    很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便,作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動登錄呢,下面我們就來看看吧
    2023-08-08
  • 如何獲取numpy的第一個非0元素索引

    如何獲取numpy的第一個非0元素索引

    這篇文章主要介紹了如何獲取numpy的第一個非0元素索引,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python中處理Excel數(shù)據(jù)的方法對比(pandas和openpyxl)

    Python中處理Excel數(shù)據(jù)的方法對比(pandas和openpyxl)

    openpyxl?和?pandas在處理Excel數(shù)據(jù)時各有優(yōu)勢,選擇需結(jié)合具體場景,本文將從核心功能,性能,適用場景展等幾個不同的維度做個對比,感興趣的可以了解下
    2025-07-07
  • PyCharm安裝Markdown插件的兩種方法

    PyCharm安裝Markdown插件的兩種方法

    Markdown是一種可以使用普通文本編輯器編寫的標(biāo)記語言,通過簡單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式。這篇文章主要介紹了PyCharm安裝Markdown插件的兩種方法,需要的朋友可以參考下
    2019-06-06
  • 把項目從Python2.x移植到Python3.x的經(jīng)驗總結(jié)

    把項目從Python2.x移植到Python3.x的經(jīng)驗總結(jié)

    這篇文章主要介紹了把項目從Python2.x移植到Python3.x的經(jīng)驗總結(jié),包括作者所使用的Jinja2框架中一些需要注意的地方,需要的朋友可以參考下
    2015-04-04
  • python使用MkDocs自動生成文檔的操作方法

    python使用MkDocs自動生成文檔的操作方法

    python代碼注釋風(fēng)格有很多,比較主流的有 reStructuredText風(fēng)格、numpy風(fēng)格、Google風(fēng)格,自動生成文檔的工具也有很多,常見的有:Pydocs,Sphinx和MkDocs,本文給大家介紹了python使用MkDocs自動生成文檔的操作方法,需要的朋友可以參考下
    2024-06-06
  • Tortoise-orm信號實現(xiàn)及使用場景源碼詳解

    Tortoise-orm信號實現(xiàn)及使用場景源碼詳解

    這篇文章主要為大家介紹了Tortoise-orm信號實現(xiàn)及使用場景源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python模式 工廠模式原理及實例詳解

    python模式 工廠模式原理及實例詳解

    這篇文章主要介紹了python模式 工廠模式原理及實例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論