欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中最好用的json庫orjson用法詳解

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

1 簡(jiǎn)介

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

而本文我要給大家介紹的第三方 json 庫 orjson ,在公開的各項(xiàng)基準(zhǔn)性能測(cè)試中,以數(shù)倍至數(shù)十倍的性能優(yōu)勢(shì)碾壓 json 、 ujson 、 rapidjson 、 simplejson 等其他 Python 庫,且具有諸多額外功能,下面我們就來領(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 庫類似,我們可以使用 orjson.dumps() 將 Python 對(duì)象序列化為 JSON 數(shù)據(jù),注意,略有不同的是, orjson 序列化的結(jié)果并不是 str 型而是 bytes 型,在下面的例子中,我們對(duì)包含一千萬個(gè)簡(jiǎn)單字典元素的列表進(jìn)行序列化, orjson 與 json 庫的耗時(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)庫中的日期時(shí)間對(duì)象轉(zhuǎn)換成相應(yīng)的字符串,這是原生 json 庫做不到的,而通過配置 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庫orjson用法的文章就介紹到這了,更多相關(guān)Python中json庫orjson內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)以時(shí)間換空間的緩存替換算法

    Python實(shí)現(xiàn)以時(shí)間換空間的緩存替換算法

    緩存是指可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器,它先于內(nèi)存與CPU交換數(shù)據(jù),因此速度很快。緩存就是把一些數(shù)據(jù)暫時(shí)存放于某些地方,可能是內(nèi)存,也有可能硬盤。下面給大家介紹Python實(shí)現(xiàn)以時(shí)間換空間的緩存替換算法,需要的朋友參考下
    2016-02-02
  • 由淺入深講解python中的yield與generator

    由淺入深講解python中的yield與generator

    這篇文章主要由淺入深講解了python中yield與generator的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • Python django中如何使用restful框架

    Python django中如何使用restful框架

    今天給大家?guī)淼氖顷P(guān)于Python框架的相關(guān)知識(shí),文章圍繞著django中restful框架的使用展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python讀取指定日期郵件的實(shí)例

    Python讀取指定日期郵件的實(shí)例

    今天小編就為大家分享一篇Python讀取指定日期郵件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • win7上tensorflow2.2.0安裝成功 引用DLL load failed時(shí)找不到指定模塊 tensorflow has no attribute xxx 解決方法

    win7上tensorflow2.2.0安裝成功 引用DLL load failed時(shí)找不到指定模塊 tensorflo

    這篇文章主要介紹了win7上tensorflow2.2.0安裝成功 引用時(shí)DLL load failed找不到指定模塊 tensorflow has no attribute xxx 解決方法,需要的朋友可以參考下
    2020-05-05
  • python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實(shí)現(xiàn)方法

    python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實(shí)現(xiàn)方法

    本文給大家介紹python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實(shí)現(xiàn)方法,在文章底部給大家提到了Python 操作sqlite數(shù)據(jù)庫及保存查詢numpy類型數(shù)據(jù)的實(shí)例代碼,需要的朋友參考下吧
    2021-06-06
  • Linux下為不同版本python安裝第三方庫

    Linux下為不同版本python安裝第三方庫

    本文給大家分享了下作者是如何在linux下為python2.x以及python3.x安裝第三方庫的方法,十分的實(shí)用,有需要的小伙伴可以參考下
    2016-08-08
  • Python實(shí)現(xiàn)

    Python實(shí)現(xiàn)"驗(yàn)證回文串"的幾種方法

    這篇文章主要介紹了Python實(shí)現(xiàn)"驗(yàn)證回文串"的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python3指定路徑尋找符合匹配模式文件

    Python3指定路徑尋找符合匹配模式文件

    這篇文章主要介紹了Python3指定路徑尋找符合匹配模式文件,涉及Python文件查找與模式匹配的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python實(shí)現(xiàn)加密的方式總結(jié)

    python實(shí)現(xiàn)加密的方式總結(jié)

    這篇文章主要介紹了python實(shí)現(xiàn)加密的方式總結(jié),文中給大家提到了python中加密的注意點(diǎn),通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論