JMeter中,對response返回JSON格式的數據進行處理,格式如下:
{ "code":2000, "message":"success", "body": [ {"Code":"0001","Desc":"值1","sortNo":1}, {"Code":"0002","Desc":"值2","sortNo":2}, {"Code":"0003","Desc":"值3","sortNo":3} ] }
數據提取方法:
正則表達式提取
正則表達式提取器說明:
Apply to:應用范圍(一般就選擇默認的Main sample only),就算有重定向,一般也是提取最終那個請求的接口。
要檢查的響應字段:樣本數據源。
主體: 接口響應主體內容,一般要提取普通http響應結果的數據,都勾選這個。
信息頭:響應頭的所有內容。
Request Headers:請求頭的所有內容。
url:是對sample的url進行匹配,也就是查看結果樹里請求內容的第一行url,不包含data里的請求參數(即只能匹配protocol(協議)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。
響應代碼:http響應代碼,如101,200,302,404,501等。
響應信息:http響應代碼對應的響應信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。
引用名稱:其他地方引用時的變量名稱,名稱只能是一個,引用方法:${test}
正則表達式:數據提取器,一般簡單的通用語法就是:左邊界(.*?)右邊界,左右邊界就是為了能准確定位到想匹配的內容,里面的'?'為非貪婪匹配,(非貪婪模式就是說在遇到第一個右邊界后就停止匹配,這樣就可以精確拿到想要的內容)。建議均使用非貪婪匹配,除非特殊情況。
模板:對應正則表達式提取器類型,樣式為:
$n$。若模板為:$0$,則為整個表達式匹配到的內容,就是包括小括號內跟小括號外的內容,即(
"Code":"0001","Desc":"值1","sortNo":1)。若模板為:$1$,則對應正則表達式中的第一個(.*?)所匹配的內容,即(
0001) ,若模板為:
$2$,則對應正則表達式中的第二個(.*?)所匹配的內容,即(
值1
),若模板為$1$$2$,則把2個(.*?)所匹配的內容拼接起來,即(0001值1)。取值方式可通過${test_g1}獲取第一個匹配內容(0001),${test_g2}獲取第二個匹配內容(值1)。
匹配數字:正則表達式匹配數據的最終結果可以看做一個數組,匹配數字即可看做是數組的第幾個元素。當為 0 時,隨機返回匹配的數據。當為 1 時,表示返回匹配結果數組的第一個元素。當為負數(-1,-2,-100都可以)時,表示返回全部元素,並且同時會返回一個元素總數的變量
${test_matchNr},在引用時:通過
${test_1}的方式來取第1個匹配的內容即(
0001值11),
${test_2}來取第2個匹配的內容即(
0002值22),
${test_2_g1}來取第2個匹配的內容中$1$內容即(
0002)。
缺省值:匹配失敗時的默認值。通常用於后續的邏輯判斷,建議使用一些特殊含義的,比如0,NULL,ERROR等。
JSON Extractor
http://www.cnblogs.com/rechin/p/8662744.html