最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python處理json字符串(使用json.loads而不是eval())

 更新時間:2021年09月22日 09:58:00   作者:曲鳥  
eval 跟json.loads 是不一樣的函數(shù),是有實現(xiàn)不一樣功能的地方,但是在某些地方它們兩個函數(shù)的功能是一樣的,本文就詳細介紹一下

eval 跟json.loads 是不一樣的函數(shù),是有實現(xiàn)不一樣功能的地方,但是在某些地方它們兩個函數(shù)的功能是一樣的,在這個時候如果對執(zhí)行效率有一定要求的話,建議不要用eval,改用json.loads會有驚喜哦。

一、eval

eval() 函數(shù)用來執(zhí)行一個字符串表達式,并返回表達式的值。

二、json.loads

json.loads 用于解碼 JSON 數(shù)據(jù)。該函數(shù)返回 Python 字段的數(shù)據(jù)類型。

json.loads與eval都能將json字符串轉(zhuǎn)成python中的對象,但在實際工作中發(fā)現(xiàn),在處理json字符串時,json.loads的性能遠超eval

三、效率對比

下列代碼是通過json.loads和eval方式將103KB大小的json字符串轉(zhuǎn)python字典的耗時對比:

   old_data = redis_con.get('api-case-version:' + str(version_id))
            if old_data:
                l_start = datetime.datetime.now()
                load_dict = json.loads(old_data)
                l_end = datetime.datetime.now()
                print('json.loads', l_end - l_start)
                e_start = datetime.datetime.now()
                old_dict = eval(old_data)
                e_end = datetime.datetime.now()
                print('eval', e_end - e_start)

耗時對比

耗時相差了13倍多。
在平時的場景下很難遇到處理大JSON字符串的情況,所以使用loads或eval差別可以忽略不計。但在我目前的項目中,是需要取swagger上的所有接口做對比,JSON字符串的大小經(jīng)常達到1M+,這時使用loads和eval就有了較為明顯的性能差異了。

但是使用json.loads有個地方需要注意一下,json.loads對列表沒什么要求,但是對字典的格式有一定的要求,key值要保持是雙引號的key,單引號的key或者int類型都會報錯。

報錯內(nèi)容如下

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

因此字典的話建議儲存格式就是要用json.dumps轉(zhuǎn)換成標準的json格式然后再儲存成字符串。

另外如果是其他序列化格式的,對json的速度不滿意的可以考慮用一下msgpack,使用方式也很簡單,但是也是對格式有一定的要求,有很多博主進行過測試,都是比json快幾倍以上。這里就不詳講了。

到此這篇關(guān)于python處理json字符串(使用json.loads而不是eval())的文章就介紹到這了,更多相關(guān)python處理json字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 學習win32com操作word之Range精講

    學習win32com操作word之Range精講

    這篇文章主要為大家介紹了win32com操作word之Range精講學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Python函數(shù)中不定長參數(shù)的寫法

    Python函數(shù)中不定長參數(shù)的寫法

    今天小編就為大家分享一篇關(guān)于Python函數(shù)中不定長參數(shù)的寫法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 簡單總結(jié)Python中序列與字典的相同和不同之處

    簡單總結(jié)Python中序列與字典的相同和不同之處

    這篇文章主要介紹了Python中序列與字典的相同和不同之處,序列這里講到Python中最常用的列表和元組以及字典三種,需要的朋友可以參考下
    2016-01-01
  • Python進行圖片驗證碼識別方法步驟

    Python進行圖片驗證碼識別方法步驟

    這篇文章主要給大家介紹了關(guān)于Python進行圖片驗證碼識別的相關(guān)資料,基于Python和OpenCV的驗證碼識別系統(tǒng)具有重要的研究意義和實際應用價值,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • python實現(xiàn)簡單的名片管理系統(tǒng)

    python實現(xiàn)簡單的名片管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)名片管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Ubuntu安裝配置MySQL、Python、Nginx的詳細過程

    Ubuntu安裝配置MySQL、Python、Nginx的詳細過程

    這篇文章主要介紹了Ubuntu安裝配置MySQL、Python、Nginx的詳細過程,還包含了如何解決Navicat無法遠程連接的問題,提供了檢查Python和Nginx是否已安裝的方法,需要的朋友可以參考下
    2025-03-03
  • 深入淺析python 中的匿名函數(shù)

    深入淺析python 中的匿名函數(shù)

    匿名函數(shù)指一類無須定義標識符的函數(shù)或子程序。接下來通過本文給大家介紹python 中的匿名函數(shù),感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05
  • python入門語句基礎之if語句、while語句

    python入門語句基礎之if語句、while語句

    本文介紹了python入門語句基礎之if語句、while語句,if?語句讓你能夠檢查程序的當前狀態(tài),并據(jù)此采取相應的措施,而for?循環(huán)用于針對集合中的每個元素都一個代碼塊,而?while?循環(huán)不斷地運行,直到指定的條件不滿足為止,本文通過示例代碼詳解介紹,需要的朋友參考下吧
    2022-04-04
  • python實現(xiàn)祝福彈窗效果

    python實現(xiàn)祝福彈窗效果

    這篇文章主要為大家詳細介紹了python實現(xiàn)祝福彈窗效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python NumPy實現(xiàn)數(shù)組排序與過濾示例分析講解

    Python NumPy實現(xiàn)數(shù)組排序與過濾示例分析講解

    NumPy是Python的一種開源的數(shù)值計算擴展,它支持大量的維度數(shù)組與矩陣運算,這篇文章主要介紹了使用NumPy實現(xiàn)數(shù)組排序與過濾的方法,需要的朋友們下面隨著小編來一起學習吧
    2023-05-05

最新評論

大埔县| 大宁县| 乡宁县| 奉贤区| 柘荣县| 信阳市| 托克逊县| 什邡市| 邵阳县| 彰化县| 吉隆县| 兰州市| 泗洪县| 安化县| 平乐县| 崇义县| 海南省| 盐津县| 柏乡县| 利辛县| 明溪县| 龙南县| 宿州市| 内丘县| 阳春市| 庆城县| 东安县| 花垣县| 稷山县| 台安县| 竹北市| 利辛县| 肥乡县| 海门市| 灵武市| 抚州市| 渭源县| 永嘉县| 眉山市| 宿松县| 应城市|