日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)

發布時間:2023/11/28 生活经验 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

之前在實際的項目研發中,需要對一些復雜的json數據進行取值操作,由于json數據的層級很深,所以經常取值的代碼會變成類似這樣:

value = data['store']['book'][0]['title']

有的甚至會比這個更長,看起來特別不舒服,而且假如原始的數據發生了一個變化,你需要針對你的代碼再做一個工作量不小的適配工作,非常不方便,所以我想能否可以快速的對一串json數據取到想要的key對應的value值呢?

經過一段嘗試,終于成功的解決了這個問題,其實核心思想就是將取值過程流程化,代碼其實很簡單,我也已經將代碼傳到了github上了,地址在這里。

安裝

為了更加能夠讓大家快速的使用代碼的相關功能,我將代碼上傳到python庫。

大家可以使用pip進行安裝:

pip install jsonsearch

或者使用

pip install --index-url https://pypi.org/simple/jsonsearch

解決方案

測試數據

{"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95},{       "category": "fiction","author": "Evelyn Waugh","title": "Sword of Honour","price": 12.99},      {       "category": "fiction", "author": "Herman Melville","title": "Moby Dick","isbn": "0-553-21311-3","price": 8.99},{   "category": "fiction","author": "J. R. R. Tolkien","title": "The Lord of the Rings","isbn": "0-395-19395-8","price": 22.99}],"bicycle": {"color": "red","price": 19.95}},"expensive": 10
}

功能介紹

當前程序主要有以下幾個功能:

  • 查找key對應的所有值,比如查找上述數據中title對應的所有值
  • 查找key對應值的所有路徑,比如取到title對應的值經過的所有路徑
  • 查找key對應的第一個值,比如查找上述數據中title對應的第一個值
  • 查找key對應值的第一條路徑,比如取到title對應的值經過的第一條路徑

正式使用

準備工作

  1. 導入jsonsearch包
from jsonsearch import JsonSearch
  1. 數據初始化

如果你導入的數據本來就是json對象,那么采用如下的方式導入:

jsondata = JsonSearch(object=test_data, mode='j')

如果你導入的數據是字符類型對象,那么采用如下的方式導入:

jsondata = JsonSearch(object=test_data, mode='s')

其中的區別在于mode選項的值填寫的不一樣,其中j表示json對象,mode表示字符對象。

功能使用

1. 查找key對應的所有值

如果我們希望從案例數據中查找title對應的所有值,只需使用下面程序即可

jsondata.search_all_value(key='title')

得到的結果如下:

['Sayings of the Century', 'Sword of Honour', 'Moby Dick', 'The Lord of the Rings']

2. 查找key對應值的所有路徑

如果我們希望從案例數據中查找title對應值的所有路徑,只需使用下面程序即可

jsondata.search_all_path(key='title')   

得到的結果如下:

[['store', 'book', 0, 'title'], ['store', 'book', 1, 'title'], ['store', 'book', 2, 'title'], ['store', 'book', 3, 'title']]

如果我們對路徑進行遍歷其實也能取到我們的值。

3. 查找key對應的第一個值

如果我們希望從案例數據中查找title對應的第一個值,只需使用下面程序即可

jsondata.search_first_value(key='title')      

得到的結果如下:

'Sayings of the Century'

4. 查找key對應值的第一條路徑

如果我們希望從案例數據中查找title對應值的第一條路徑,只需使用下面程序即可

jsondata.search_first_path(key='title')

得到的結果如下:

['store', 'book', 0, 'title']

結語

以上就是當前jsonsearch的主要功能,后續的話會繼續為其完善一些相應的功能,如果大家有需求的話,也歡迎在github上提issue,歡迎大家下載使用jsonsearch

如果對你有幫助的話,歡迎在github上點擊一個star,非常感謝。

總結

以上是生活随笔為你收集整理的python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。