Python json解析庫jsonpath原理及使用示例
阿新 • • 發佈:2020-11-26
jsonpath
jsonpath 用於多層巢狀 json格式的 解析。
pip install jsonpath
JsonPath | 描述 |
---|---|
$ | 根節點 |
@ | 現行節點 |
.or[] | 取子節點 |
n/a | 取父節點,jsonpath為支援 |
.. | 就是不管位置,選擇所有複合條件的條件 |
* | 匹配所有元素節點 |
n/a | 根據屬性訪問,json不支援,因為json是個key-value遞迴結構,不需要數屬性訪問 |
[] | 迭代器標示(可以在裡邊做簡單的迭代操作,如陣列下標,根據內容選值等) |
[,] | 支援迭代器中做多選 |
?() | 支援過濾操作 |
() | 支援表示式計算 |
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 },"author": "Herman Melville","title": "Moby Dick","isbn": "0-553-21311-3","price": 8.99 },"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的所有數 |
$…book[?(@.price<10)] | 獲取價格大於10 |
$…* | 匹配所有資料 |
使用示例
$ 是查詢的根節點,傳引數是python的dict 型別,當查詢到的時候返回一個list結果,查詢失敗的時候返回 False.
import jsonpath result = { "code": 0,"data": [ { "age": 20,"create_time": "2019-09-15","id": 1,"mail": "[email protected]","name": "yoyo","sex": "M" },{ "age": 21,"create_time": "2019-09-16","id": 2,"mail": "[email protected]","name": "yoyo111","sex": "M" } ],"msg": "success!" } msg = jsonpath.jsonpath(result,'$.msg') print(msg) # 輸出結果 ['success!'] names = jsonpath.jsonpath(result,'$..name') print(names) # 輸出結果 ['yoyo','yoyo111'] no = jsonpath.jsonpath(result,'$..yoyo') print(no) # 找不到是結果是 False
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。