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對應的值經過的第一條路徑
正式使用
準備工作
- 導入jsonsearch包
from jsonsearch import JsonSearch
- 數據初始化
如果你導入的數據本來就是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包)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用vscode连接服务器写代码指南
- 下一篇: docker打包镜像出现python安装