Python json解析庫jsonpath原理及使用示例
jsonpath
jsonpath 用于多層嵌套 json格式的 解析。
pip install jsonpath
| JsonPath | 描述 |
|---|---|
| $ | 根節(jié)點 |
| @ | 現(xiàn)行節(jié)點 |
| .or[] | 取子節(jié)點 |
| n/a | 取父節(jié)點,jsonpath為支持 |
| .. | 就是不管位置,選擇所有復合條件的條件 |
| * | 匹配所有元素節(jié)點 |
| n/a | 根據(jù)屬性訪問,json不支持,因為json是個key-value遞歸結(jié)構(gòu),不需要數(shù)屬性訪問 |
| [] | 迭代器標示(可以在里邊做簡單的迭代操作,如數(shù)組下標,根據(jù)內(nèi)容選值等) |
| [,] | 支持迭代器中做多選 |
| ?() | 支持過濾操作 |
| () | 支持表達式計算 |
| n/a | 分組,JsonPath不支持 |
jsonpath使用示例
book_dict = {
"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
}
}
}
| JsonPath | Result |
|---|---|
| $.store.book[*].author | store中的所有的book作者 |
| $…author | 所有的作者 |
| $.store.* | store下的所有元素 |
| $.store…price | store中的所有價錢 |
| $…book[2] | 第三本書 |
| $…book[(@.length-1)] | 最后一本書 |
| $…book[0,1] | 取前兩本書 |
| $…book[?(@.isbn)] | 獲取有jsbn的所有數(shù) |
| $…book[?(@.price<10)] | 獲取價格大于10 |
| $…* | 匹配所有數(shù)據(jù) |
使用示例
$ 是查找的根節(jié)點,傳參數(shù)是python的dict 類型,當查找到的時候返回一個list結(jié)果,查找失敗的時候返回 False.
import jsonpath
result = {
"code": 0,
"data": [
{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
},
{
"age": 21,
"create_time": "2019-09-16",
"id": 2,
"mail": "123445@qq.com",
"name": "yoyo111",
"sex": "M"
}
],
"msg": "success!"
}
msg = jsonpath.jsonpath(result, '$.msg')
print(msg) # 輸出結(jié)果 ['success!']
names = jsonpath.jsonpath(result, '$..name')
print(names) # 輸出結(jié)果 ['yoyo', 'yoyo111']
no = jsonpath.jsonpath(result, '$..yoyo')
print(no) # 找不到是結(jié)果是 False
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python-leetcode求區(qū)間[M,N]內(nèi)的所有素數(shù)的個數(shù)實現(xiàn)方式
這篇文章主要介紹了python-leetcode求區(qū)間[M,N]內(nèi)的所有素數(shù)的個數(shù)實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python計算質(zhì)數(shù)的方法總結(jié)
質(zhì)數(shù)(Prime?Number)是指大于1且只能被1和自身整除的正整數(shù),計算質(zhì)數(shù)是數(shù)論中的一個經(jīng)典問題,本文將介紹python中多種計算質(zhì)數(shù)的方法,希望對大家有所幫助2023-11-11
Python簡單實現(xiàn)網(wǎng)頁內(nèi)容抓取功能示例
這篇文章主要介紹了Python簡單實現(xiàn)網(wǎng)頁內(nèi)容抓取功能,結(jié)合實例形式分析了Python基于urllib模塊的網(wǎng)頁請求、內(nèi)容讀取等相關操作技巧,需要的朋友可以參考下2018-06-06
python3實現(xiàn)Dijkstra算法最短路徑的實現(xiàn)
這篇文章主要介紹了python3實現(xiàn)Dijkstra算法最短路徑的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05
python實現(xiàn)的AES雙向?qū)ΨQ加密解密與用法分析
這篇文章主要介紹了python實現(xiàn)的AES雙向?qū)ΨQ加密解密與用法,簡單分析了AES加密解密算法的基本概念并結(jié)合實例形式給出了AES加密解密算法的相關實現(xiàn)技巧與使用注意事項,需要的朋友可以參考下2017-05-05
Python Django框架實現(xiàn)應用添加logging日志操作示例
這篇文章主要介紹了Python Django框架實現(xiàn)應用添加logging日志操作,結(jié)合實例形式分析了Django框架中添加Python內(nèi)建日志模塊相關操作技巧,需要的朋友可以參考下2019-05-05

