Jmeter後置處理器之Json提取器

2021-10-04 03:49:19 字數 2741 閱讀 9056

如今越來越多的系統採用json格式作為資料交換格式,即伺服器響應回來的文字會大量的json格式。如果我們要對伺服器響應的json資料進行加工處理的話,可以使用傳統的正規表示式提取器,但是在很多場合,使用json提取器進行提取會更加快速、準確。

1.jsonpath語法

基本操作符

$ 表示根節點

示例:$ 表示獲取整個json字串(物件)

@表示當前節點,一般來說用於子表示式或者過濾表示式

. 或 [ ] 用於連線父子節點

示例:$.name 表示獲取根節點下的name節點的值

$.name等價於$["name"]

$["data"]["teacher"]等價於$.data.teacher

中括號允許一次提取多個節點,構成乙個新的json子物件。

示例:$["expectage","name"]結果為:result[0]=

.表示深層掃瞄,用於獲取當前節點下的所有指定物件。

示例:$..name表示提取根節點下(包括其子節點下)的所有叫name的子節點。

*萬用字元,示例:$.*表示提取根節點下的所有子節點的值。

陣列的操作

$.data.student如果student的值是乙個陣列,則表示式提取到的值只有乙個,就是整個陣列。

$.data.student[*]或者$.data.student.*則表示提取student陣列中的每乙個元素。

(1)基於下標提取

下標從0開始計算,示例:$.data.student[1]表示提取student陣列中的第二個元素的值。

下標可以進行多個值的列舉提取。

示例:$.data.student[1,3]表示提取student陣列中的第二個和第四個元素的值。

(2)切片提取

格式為:陣列[s:e],s和e都是下標,表示獲取下標從s(包括)開始到e(不包括)結束的所有陣列元素的值。

示例:$.data.student[1:2]表示提取$.data.student[1]的值。

$.data.student[0:2]表示提取$.data.student[0]$.data.student[1]的值。

s和e可以為空。如果s為空,則表示從0開始。如果e為空,則表示到最後乙個元素。

示例:$.data.student[1:]表示從下標1開始的所有的元素。

$.data.student[:2]等價於$.data.student[0:2]

s和e也可以是負數,表示倒數第n個元素。

示例:$.data.student[:-2]表示獲取倒數第二個元素(不包括)之前的所有元素。

$.data.student[:-1]表示獲取倒數第1個元素(不包括)之前的所有元素。

$.data.student[-2:]表示獲取倒數第二個元素(包括)之後的所有元素。

(3)過濾表示式[?()]

可以通過過濾表示式去根據特定的條件篩選陣列中符合條件的元素然後進行操作。

過濾表示式常用的操作符如下:

==、!=、<、<=、>、>=

=~正則匹配

in 存在於

nin不存在於

subsetof子集

||或者

&&並且

示例:$.data.student[?(@.isvip==true)]表示提取student陣列中,isvip屬性=true的元素的值。

$.data.student[?(@.hobby.length() >= 2)]表示提取student陣列中,hobby的值的數量大於等於2個的元素的值。

$.data.student[?(@.age in ["25","26"])]等價於$.data.student[?(@.age=="25" || @.age=="26")]表示提取年齡在25,26這些指定的值的學生資訊。

$.data.student[?(@.age nin ["25","26"])]等價於$.data.student[?(@.age!="25" && @.age!="26")]表示提取年齡不在25,26這些指定的值的學生資訊。

$.data.student[?(@.hobby subsetof ["book","football","game"])]表示提取興趣包含讀書、足球、遊戲的學生資訊

過濾表示式中也允許通過正則的方式進行過濾。

格式為:節點 =~ /正規表示式/

示例:$.data.student[?(@.name =~ /張.*/)]表示查詢姓張的學生資訊。

2.json提取器詳解

jmeter後置處理器

jmeter 關於 獲取響應頭資訊 1 關於發起請求以後服務端會返回對應請求的資訊,其中包含了部分需要在後面請求中需要使用的值 所以就需要將需要的部分提取出來,對於響應資訊的內容可以通過 後置處理器的 正則提取器,jsonpath 提起器 以及 beanshell提取器即可完成內容提取 對於正則提取...

jmeter 後置處理器

1.1 什麼是關聯?將請求1的輸出 作為 請求2 的輸入,則稱之為關聯,就是介面之間資料存在依賴關係 例如 使用者登入 請求中伺服器返回了token,查詢使用者資訊 請求需要把token返回給伺服器進行驗證 1.2 正則提取器 正則提取器就是可以從請求的響應結果中取到需要的內容,從而實現關聯,正則提...

Jmeter後置處理器

jdbc postprocessor實際上是乙個jdbc request,與jdbc request功能相同,都可以執行sql語句 場景說明 用jdbc request修改了一些資料,當測試完成後,可以用jdbc postprocessor完成使資料恢復之前的 能夠針對單一取樣器來設定執行時錯誤的處...