在使用Apache JMeter進行API測試時,我們經常需要從JSON格式的響應中提取特定欄位的值。這可以透過使用JMeter內建的JSON提取器和正規表示式提取器來完成。以下是一個具體的例子,展示瞭如何從一個JSON響應中提取rowId
的值,同時處理字串終止符。
假設我們有以下JSON響應:
{ "flag": "success", "formulaStatus": -1, "encryption": "0", "changestate": 1, "href": "/pf/ovdf/bd/openPage?pr=od&ll=115dfc704f96b039825a66f15b04&rowId=D96DB6B24EEE412BB0DE7E728EE193E6", "closer": false }
我們的目標是提取rowId
引數的值D96DB6B24EEE412BB0DE7E728EE193E6
。這個值不是直接作為JSON物件的一個屬性呈現的,而是作為一個URL的一部分,巢狀在href
欄位中。因此,我們需要兩步來提取這個值。
步驟 1: 提取href
欄位
首先,我們使用JSON提取器來捕獲href
欄位的值。JSON提取器可以直接從JSON結構中提取值。我們可以按照以下步驟配置JSON提取器:
- 新增JSON提取器到請求:在JMeter中,選擇HTTP請求元件,然後右鍵選擇“新增” -> “後置處理器” -> “JSON提取器”。
- 配置JSON提取器:在JSON提取器的配置介面中,設定以下引數:
- 變數名稱:
extractedHref
- JSON路徑表示式:
$.href
- 預設值:
NOT_FOUND
- 變數名稱:
這樣配置後,如果JSON響應格式正確,extractedHref
變數將包含href
欄位的完整URL字串。
步驟 2: 從URL中提取rowId
接下來,我們需要從extractedHref
變數中提取rowId
的值。我們可以使用正規表示式提取器來完成這個任務:
- 新增正規表示式提取器:在JSON提取器下面,右鍵選擇“新增” -> “後置處理器” -> “正規表示式提取器”。
- 配置正規表示式提取器:在正規表示式提取器的配置介面中,設定以下引數:
- 應用到變數:
extractedHref
- 正規表示式:
rowId=([^&"]+)
- 模板:
$1$
- 匹配編號:
1
- 預設值:
NOT_FOUND
- 應用到變數:
在這個正規表示式中,rowId=([^&"]+)
的意思是查詢rowId=
之後的任何字元序列,直到遇到&
、"
或字串結束。圓括號()
表示捕獲組,用於提取匹配的部分。這樣修改後,正規表示式將在遇到引號"
時停止匹配,這可以防止提取到額外的字元,如在JSON響應中緊跟rowId
值後的引號和其他欄位。
結論
透過以上步驟,我們可以有效地從JSON響應中提取rowId
的值。這種方法不僅適用於本例,也可以廣泛應用於需要從巢狀資訊中提取資料的場景。JMeter的強大功能使得它成為API測試和資料提取的強有力工具。