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

Python中最好用的json庫(kù)orjson用法詳解

 更新時(shí)間:2022年06月06日 10:01:53   作者:代碼輸入中...  
orjson是一個(gè)用于python的快速、正確的json庫(kù),它的基準(zhǔn)是 json最快的python庫(kù),具有全面的單元、集成和互操作性測(cè)試,下面這篇文章主要給大家介紹了關(guān)于Python中最好用的json庫(kù)orjson用法的相關(guān)資料,需要的朋友可以參考下

1 簡(jiǎn)介

大家好,我們?cè)谌粘J褂?nbsp;Python 的過程中,經(jīng)常會(huì)使用 json 格式存儲(chǔ)一些數(shù)據(jù),尤其是在 web 開發(fā)中。而 Python 原生的 json 庫(kù)性能差、功能少,只能堪堪應(yīng)對(duì)簡(jiǎn)單輕量的 json 數(shù)據(jù)存儲(chǔ)轉(zhuǎn)換需求。

而本文我要給大家介紹的第三方 json 庫(kù) orjson ,在公開的各項(xiàng)基準(zhǔn)性能測(cè)試中,以數(shù)倍至數(shù)十倍的性能優(yōu)勢(shì)碾壓 json 、 ujson 、 rapidjson 、 simplejson 等其他 Python 庫(kù),且具有諸多額外功能,下面我們就來領(lǐng)略其常用方法吧~

2 orjson常用方法

orjson 支持 3.7 到 3.10 所有版本64位的 Python ,本文演示對(duì)應(yīng)的 orjson 的版本為 3.7.0 ,直接使用 pip install -U orjson 即可完成安裝。下面我們來對(duì) orjson 中的常用方法進(jìn)行演示:

2.1 序列化

與原生 json 庫(kù)類似,我們可以使用 orjson.dumps() 將 Python 對(duì)象序列化為 JSON 數(shù)據(jù),注意,略有不同的是, orjson 序列化的結(jié)果并不是 str 型而是 bytes 型,在下面的例子中,我們對(duì)包含一千萬個(gè)簡(jiǎn)單字典元素的列表進(jìn)行序列化, orjson 與 json 庫(kù)的耗時(shí)比較如下:

2.2 反序列化

將 JSON 數(shù)據(jù)轉(zhuǎn)換為 Python 對(duì)象的過程我們稱之為反序列化,使用 orjson.loads() 進(jìn)行操作,可接受 bytes 、 str 型等常見類型,在前面例子的基礎(chǔ)上我們添加反序列化的例子:

2.3 豐富的option選項(xiàng)

在 orjson 的序列化操作中,可以通過參數(shù) option 來配置諸多額外功能,常用的有:

  • OPT_INDENT_2

通過配置 option=orjson.OPT_INDENT_2 ,我們可以為序列化后的 JSON 結(jié)果添加2個(gè)空格的縮進(jìn)美化效果,從而彌補(bǔ)其沒有參數(shù) indent 的不足:

  • OPT_OMIT_MICROSECONDS

orjson.dumps() 可以直接將 Python 中 datetime 、 time 等標(biāo)準(zhǔn)庫(kù)中的日期時(shí)間對(duì)象轉(zhuǎn)換成相應(yīng)的字符串,這是原生 json 庫(kù)做不到的,而通過配置 option=orjson.OPT_OMIT_MICROSECONDS ,可以將轉(zhuǎn)換結(jié)果后綴的毫秒部分省略掉:

  • OPT_NON_STR_KEYS

當(dāng)需要序列化的對(duì)象存在非數(shù)值型鍵時(shí), orjson 默認(rèn)會(huì)拋出 TypeError 錯(cuò)誤,這時(shí)需要配置 option=orjson.OPT_NON_STR_KEYS 來強(qiáng)制將這些鍵轉(zhuǎn)換為字符型:

OPT_SERIALIZE_NUMPY

orjson 的一大重要特性是其可以將包含 numpy 中數(shù)據(jù)結(jié)構(gòu)對(duì)象的復(fù)雜對(duì)象,兼容性地轉(zhuǎn)換為 JSON 中的數(shù)組,配合 option=orjson.OPT_SERIALIZE_NUMPY 即可:

  • OPT_SERIALIZE_UUID

除了可以自動(dòng)序列化 numpy 對(duì)象外, orjson 還支持對(duì) UUID 對(duì)象進(jìn)行轉(zhuǎn)換,在 orjson 3.0 之前的版本中,需要配合 option=orjson.OPT_SERIALIZE_UUID ,而本文演示的 3.X 版本則無需額外配置參數(shù):

  • OPT_SORT_KEYS

通過配合參數(shù) option=orjson.OPT_SORT_KEYS ,可以對(duì)序列化后的結(jié)果自動(dòng)按照鍵進(jìn)行排序:

  • 組合多種option

當(dāng)你的序列化操作需要涉及多種 option 功能時(shí),則可以使用 | 運(yùn)算符來組合多個(gè) option 參數(shù)即可:

2.4 針對(duì)dataclass、datetime添加自定義處理策略

當(dāng)你需要序列化的對(duì)象中涉及到 dataclass 自定義數(shù)據(jù)結(jié)構(gòu)時(shí),可以配合 orjson.OPT_PASSTHROUGH_DATACLASS ,再通過對(duì) default 參數(shù)傳入自定義處理函數(shù),來實(shí)現(xiàn)更為自由的數(shù)據(jù)轉(zhuǎn)換邏輯,譬如下面簡(jiǎn)單的例子中,我們可以利用此特性進(jìn)行原始數(shù)據(jù)的脫敏操作:

類似的,針對(duì) datetime 類型數(shù)據(jù),我們同樣可以配合 OPT_PASSTHROUGH_DATETIME 和自定義 default 函數(shù)實(shí)現(xiàn)日期自定義格式化轉(zhuǎn)換:

總結(jié)

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

相關(guān)文章

  • python xlwt模塊的使用解析

    python xlwt模塊的使用解析

    這篇文章主要介紹了python xlwt模塊的使用解析,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python如何通過地址獲取變量

    Python如何通過地址獲取變量

    這篇文章主要介紹了Python如何通過地址獲取變量,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python中循環(huán)依賴問題及其解決方案

    Python中循環(huán)依賴問題及其解決方案

    在軟件開發(fā)中,循環(huán)依賴是一個(gè)常見的問題,尤其是在使用 Python 這樣的動(dòng)態(tài)語(yǔ)言時(shí),循環(huán)依賴指的是兩個(gè)或多個(gè)模塊或組件相互依賴,形成一個(gè)閉環(huán),本文將探討 Python 中循環(huán)依賴的問題,并提供一些解決方案,需要的朋友可以參考下
    2024-06-06
  • 4種方法python批量修改替換列表中元素

    4種方法python批量修改替換列表中元素

    這篇文章主要介紹了4種python批量替換列表中元素方法,需要的朋友可以參考下
    2022-04-04
  • Python json格式化打印實(shí)現(xiàn)過程解析

    Python json格式化打印實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python json格式化打印實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Pandas實(shí)現(xiàn)一列數(shù)據(jù)分隔為兩列

    Pandas實(shí)現(xiàn)一列數(shù)據(jù)分隔為兩列

    這篇文章主要介紹了Pandas實(shí)現(xiàn)一列數(shù)據(jù)分隔為兩列,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python爬蟲入門教程--HTML文本的解析庫(kù)BeautifulSoup(四)

    python爬蟲入門教程--HTML文本的解析庫(kù)BeautifulSoup(四)

    Beautiful Soup是python的一個(gè)庫(kù),最主要的功能是從網(wǎng)頁(yè)抓取數(shù)據(jù)。下面這篇文章主要給大家介紹了python爬蟲之HTML文本的解析庫(kù)BeautifulSoup的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • pandas使用get_dummies進(jìn)行one-hot編碼的方法

    pandas使用get_dummies進(jìn)行one-hot編碼的方法

    今天小編就為大家分享一篇pandas使用get_dummies進(jìn)行one-hot編碼的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 詳解Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果

    詳解Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果

    這篇文章主要介紹了Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python教程之成員和身份運(yùn)算符的用法詳解

    Python教程之成員和身份運(yùn)算符的用法詳解

    身份運(yùn)算符是python用來判斷的兩個(gè)對(duì)象的存儲(chǔ)單元是否相同的一種運(yùn)算符號(hào)。Python的成員運(yùn)算符是“是否包含運(yùn)算符”,主要應(yīng)用在字符串或者集合中。本文將通過示例聊聊二者的使用,需要的可以參考一下
    2022-09-09

最新評(píng)論