Python json解析庫jsonpath原理及使用示例
jsonpath
jsonpath 用于多層嵌套 json格式的 解析。
pip install jsonpath
JsonPath | 描述 |
---|---|
$ | 根節(jié)點 |
@ | 現(xiàn)行節(jié)點 |
.or[] | 取子節(jié)點 |
n/a | 取父節(jié)點,jsonpath為支持 |
.. | 就是不管位置,選擇所有復(fù)合條件的條件 |
* | 匹配所有元素節(jié)點 |
n/a | 根據(jù)屬性訪問,json不支持,因為json是個key-value遞歸結(jié)構(gòu),不需要數(shù)屬性訪問 |
[] | 迭代器標(biāo)示(可以在里邊做簡單的迭代操作,如數(shù)組下標(biāo),根據(jù)內(nèi)容選值等) |
[,] | 支持迭代器中做多選 |
?() | 支持過濾操作 |
() | 支持表達(dá)式計算 |
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 類型,當(dāng)查找到的時候返回一個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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pycharm安裝django框架詳細(xì)圖文教程(指定版本)
這篇文章主要給大家介紹了關(guān)于pycharm安裝django框架(指定版本)的相關(guān)資料,PyCharm是一種Python?IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,需要的朋友可以參考下2023-10-10python-leetcode求區(qū)間[M,N]內(nèi)的所有素數(shù)的個數(shù)實現(xiàn)方式
這篇文章主要介紹了python-leetcode求區(qū)間[M,N]內(nèi)的所有素數(shù)的個數(shù)實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Python計算質(zhì)數(shù)的方法總結(jié)
質(zhì)數(shù)(Prime?Number)是指大于1且只能被1和自身整除的正整數(shù),計算質(zhì)數(shù)是數(shù)論中的一個經(jīng)典問題,本文將介紹python中多種計算質(zhì)數(shù)的方法,希望對大家有所幫助2023-11-11Python簡單實現(xiàn)網(wǎng)頁內(nèi)容抓取功能示例
這篇文章主要介紹了Python簡單實現(xiàn)網(wǎng)頁內(nèi)容抓取功能,結(jié)合實例形式分析了Python基于urllib模塊的網(wǎng)頁請求、內(nèi)容讀取等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06python3實現(xiàn)Dijkstra算法最短路徑的實現(xiàn)
這篇文章主要介紹了python3實現(xiàn)Dijkstra算法最短路徑的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05python實現(xiàn)的AES雙向?qū)ΨQ加密解密與用法分析
這篇文章主要介紹了python實現(xiàn)的AES雙向?qū)ΨQ加密解密與用法,簡單分析了AES加密解密算法的基本概念并結(jié)合實例形式給出了AES加密解密算法的相關(guān)實現(xiàn)技巧與使用注意事項,需要的朋友可以參考下2017-05-05Python Django框架實現(xiàn)應(yīng)用添加logging日志操作示例
這篇文章主要介紹了Python Django框架實現(xiàn)應(yīng)用添加logging日志操作,結(jié)合實例形式分析了Django框架中添加Python內(nèi)建日志模塊相關(guān)操作技巧,需要的朋友可以參考下2019-05-05