python jsonpath 語法總結


因為是第三方庫,需要我們安裝三方庫

pip  install jsonpath

from jsonpath import jsonpath


jsonpath方法需要兩個參數:
參數1:數據
參數2:jsonpath表達式

注意點:
1.如果沒有匹配不到數據返回的是False
2.匹配到數據返回的是包含數據的列表

jsonpath語法:
$ -----------> 根節點
. -----------> 選擇子節點
.. -----------> 選擇子孫節點(不考慮層級)
[] -----------> 選擇子節點/選擇數組索引
[,] -----------> 選擇多個字段
@ -----------> 代表當前選中的節點(和條件過濾一起使用)
[?(過濾條件)] ------------> 通過條件過濾數據
* ------------> 通配符,表示匹配所有
 
        
 1 data = {'code': 200,
 2         'data': [
 3             {'photo': 'https://static-image.xfz.cn/1454046552_487.png', 'create_time': '2016-01-29 13:49:13',
 4              'link': 'http://www.ehoutai.com/', 'uid': 7, 'name': '易后台'},
 5             {'photo': 'https://static-image.xfz.cn/1454046135_474.png', 'create_time': '2016-01-29 13:42:15',
 6              'link': 'http://www.sanjieke.com/', 'uid': 4, 'name': '三節課'},
 7             {'photo': 'https://static-image.xfz.cn/1454046053_122.png', 'create_time': '2016-01-29 13:40:53',
 8              'link': 'https://www.aliyun.com/', 'uid': 1, 'name': '阿里雲'},
 9             {'photo': 'https://static-image.xfz.cn/1454047318_361.png', 'create_time': '2016-01-29 14:01:59',
10              'link': 'http://xmanlegal.com/', 'uid': 8, 'name': '未來法律'}]}
11 
12 data2 = {'code': 0,
13          'msg': 'OK',
14          'data':
15              {'id': 10006043,
16               'leave_amount': -422500.0,
17               'mobile_phone': '13449960188',
18               'reg_name': '小檸檬',
19               'reg_time': '2021-01-01 22:03:39.0',
20               'type': 1,
21               'token_info':
22                   {'token_type': 'Bearer',
23                    'expires_in': '2021-01-07 12:32:52',
24                    'token': 'eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjEwMDA2MDQzLCJleHAiOjE2MDk5OTM5NzJ9.W_wi-NFjJMa3NZF9BOv_j0DvdSRhP7ncMrLfDdpM7HPpW01Afh7Gn6MAQXAFsS0Wge2BUlXAxLNTEv2RO3w-Ow'}},
25          'copyright': 'Copyright Abby © 2017-2020 騰訊公司 All Rights Reserved'
26          }
27 
28 token = jsonpath(data2, "$..token")
29 print(token)
30 
31 # 選擇子節點
32 code = jsonpath(data2, "$.code")  # ==  jsonpath(data2, "$[code]")
33 print(code)
34 
35 # 通過索引選擇列表中的數據
36 code = jsonpath(data, "$.data[0]")  # ==  jsonpath(data, "$[data][0]")
37 print(code)
38 code1 = jsonpath(data, "$.data[1].name")  # == jsonpath(data, "$.data[1][name]")
39 print(code1)
40 
41 # 選擇多個字段
42 code2 = jsonpath(data, "$.data[1][name,link,]")  # ==  jsonpath(data, "$.data[1].name,link")
43 print(code2)
44 code3 = jsonpath(data2, "$.data[id,mobile_phone,type]")  # == jsonpath(data2, "$.data.[id,mobile_phone,type]")
45 print(code3)
46 
47 # 通過過濾條件
48 res1 = jsonpath(data, "$.data[?(@.uid==4)]")  # == jsonpath(data, "$[data][?(@.uid==4)].name")
49 # print(jsonpath(data, "$.data[?(@.name=='阿里雲')]"))
50 print(res1)
51 res2 = jsonpath(data, "$.data[?(@.uid==4)][name]")  # == jsonpath(data, "$.data[?(@.uid==4)].name") # == jsonpath(data, "$[data][?(@.uid==4)].name")
52 # print(jsonpath(data, "$.data[?(@.uid > 7)][name]"))
53 print(res2)
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM