Jmeter後置處理器JSON Extractor
1、選擇路徑:對應的請求下 > 添加 > 後置處理器 > JSON Extractor
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35UeVpnTwUFRNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwAjN0IjMyATM3ETOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、界面展示
各個字面意義:
1、Variable names: 自定義的參數名稱,引用的時候用${}格式
2、JSON Path expressions: json表達式,根據表達式擷取到對應的結果;提取式:$.+參數
3、Match Numbers:比對數字(0代表随機,1代表第一個,-1代表所有)
4、Compute concatenation var(suffix_ALL):是否統計所有,即将比對到的所有值都儲存,名為“變量名_ALL”,使用場景需要擷取的值有多個,後面需要對這一組資料進行操作;
5、Default Values:找不到返的預設值,
提取相關例子:
{
"msg":null,
"rc":0,
"data":
{
"pageSize":10,
"pageNo":1,
"records":18,
"total":2,
"resultList":
[
{
"id":139,
"realName":"測試144",
"mobilePhone":"13141414141",
"sex":"女",
"age":10,
"maritalStatus":"未婚",
"identity":"513326200910276188",
"contactType":60,
"contactTypeName":"類别3",
"companyId":12,
"companyName":"華為1",
"tag":"",
"remark":"test備注",
"createdAt":"2019-08-13 16:39:38",
"bindUser":
[
3、通過JSON Path Expression找到需要的json值
檢視結果樹中切換類型為JSON Path Tester
要擷取對應的id值,在JSON Path Expression中輸入表達是,并且點選Test得到對應的結果
json表達式寫法:
擷取其中第一個id值: $.data.resultList[0].id
分析
首先分析json提取格式是【$.】後面跟參數,id在resultList中,resultList在data中,但是在resultList中有多層,resultList是數組,取第一個下标就是[0],即json表達式是$.data.resultList[0].id。
二、提取多個參數:
1、Variable names: 自定義的參數名稱;多個變量用多個自定義變量,用英文分号分開;
2、JSON Path expressions: json表達式,根據表達式擷取到對應的結果,多個的情況下用英文分号隔開
3、Match Numbers: 提取多個參數,同樣用多個值,用英文分号隔開
4、Compute concatenation var(suffix_ALL):是否統計所有,即将比對到的所有值都儲存,名為“變量名_ALL”,使用場景需要擷取的值有多個,後面需要對這一組資料進行操作;
5、Default Values: 提取多個參數,同樣用多個值,用英文分号隔開
使用場景:
新增客戶管理後,要驗證新增重複項系統處理,并且驗證删除功能
即同時需要響應結果中的 使用者id和身份證号
三、擷取所有值
有時候需要取一個清單中的最大值,則可以使用Compute concatenation var(suffix_ALL)工具;生成的是以逗号隔開的
配置頁面:
通過JSON Path Expression找到需要的json值
擷取其最大值:
使用的時候,用${max_id}去使用
參考例子:
var base_versions=vars.get("cuntomer_id_2_ALL");
var version_list=base_versions.split(",");
var maxInNumbers = Math.max.apply(Math, version_list);
vars.put("max_id",maxInNumbers);