jmespath 1 基礎用法

2022-01-09 22:53:19 字數 2269 閱讀 8177

之前我寫介面自動化測試時候,對於複雜的json返回,會使用jsonpath這個第三方庫,就像寫xpath一樣,方便的查詢json元素。

因為之前寫web自動化時候,總用xpath去查詢元素,所以用起來非常順手。

這裡是github上的鏈結,感興趣的童鞋也可以去學習一下:jsonpath

不過httprunner使用的是另乙個第三方庫jmespath,這個我還是第一次聽。大概看了下好像也很不錯,這裡是github鏈結和官方教程。

github位址

官方教程

1. 基礎表示式

①. 對於字典,可以直接輸入key來獲取到對應的value。(注意,search是jmespath提供的查詢方法,第乙個引數是查詢語法,第二個則是要查詢的資料)

import jmespath

dic_1 =

path = jmespath.search("a", dic_1)

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

foo

如果索引的key不存在,那麼會返回null,或者等效於null的語言,比如在python中返回就是none。

import jmespath

dic_1 =

path = jmespath.search("d", dic_1)

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

none

②. 實際中介面的返回值很多是多層巢狀的,比如我要獲取最裡面一層的value,可以這樣查詢:

import jmespath

dic_1 = }}}

path = jmespath.search("a.b.c.d", dic_1)

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

value

同樣,如果引用的鍵不存在,則返回null值。

2. 切片

①. 對於乙個列表,可以直接用下標查詢,類似於python中list元素訪問。(注意,索引基於0開始的)

import jmespath

# dic_1 = }}}

list_1 = ["a", "b", "c", "d", "e", "f"]

path = jmespath.search("[1]", list_1)

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

b

②. 字典和列表的巢狀也非常常見,同樣查詢也可以組合使用:

import jmespath

dic_1 = ,]}

}}path = jmespath.search("a.b.c[0].d[1][0]", dic_1)

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

1

③. 列表的切片操作,在這裡也可以適用:

import jmespath

dic_1 = ,]}

}}path = jmespath.search("a.b.c[0].d[1][5:10]", dic_1)

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

[5, 6, 7, 8, 9]

如果切片引數裡的步長是負數,則可以反向切片:

import jmespath

dic_1 = ,]}

}}path = jmespath.search("a.b.c[0].d[1][::-2]", dic_1)#步長是負數

print(path)

#執行結果

d:\daily\whatisyeild>python jmespath_demo.py

[9, 7, 5, 3, 1]

上面是一些常規的用法,但是jmespath還提供了乙個更強大的核心功能:projections,可以應用於元素集合的表示式,這個另起再講。

Updatepanel的基礎用法(1)

1.conditional 該updatepanel內的內容只會在該updatepanel內部有回發時更新 always 會在本頁面有回發時更新,而不管這個回發是不是在其updatepanel內部發生 盡量避免使用always,因為它會在每次頁面有回發時都會進行更新 datetime.now dat...

react的基礎用法(1)

首先需要先安裝 npm init y react umd react.development.js react dom umd react dom.development.js babel standalone babel.min.js 在寫 的時候要把上面三個js檔案引入 每個專案都需要加 書寫的...

python基礎 格式化輸出1( 用法)

用法 1 整數的輸出 o oct八進位制 d dec十進位制 x hex十六進製制 2 浮點數輸出 1 格式化輸出 f 保留小數點後面六位有效數字 3f,保留3位小數字 e 保留小數點後面六位有效數字,指數形式輸出 3e,保留3位小數字,使用科學計數法 g 在保證六位有效數字的前提下,使用小數方式,...