【正規表現なし】JMeterでレスポンス(JSON)を取得して次のリクエストに利用する!【JSR223 Listener】

野田竣介
今回はこのような質問をいただきました。

JMeterでレスポンスからデータを取得したい!
実際のリクエストを想定するとこのような処理が必要なケースが多いですね。
ただ、紹介されているのは正規表現を使う方法ばかり…
そこで今回はこちらの質問について解説していきます!
Contents
結論:JSR223 Listenerを利用する!
正規表現抽出を利用する方法が多く紹介されていますが、今回はJSR223 Listenerを利用します。
JSR223 Listenerを利用することでJavaScriptやJava等でパラメータを制御することができます。
JSR223 Listenerの使い方!
JSR223 Listenerの追加
取得したいパラメータを返す「HTTPリクエスト」を右クリックして「追加」→「リスナー」→「JSR223 Listener」から追加します。

言語の選択
今回はJavascriptを利用します。
「Script language」で「Javascript」を選択します。

レスポンスを取得する
「Script」に以下のコードを記述します。
取得したいパラメータに合わせてコードを変更してください。
// レスポンスのJSONをパースして受け取る
var body = JSON.parse(sampleResult.getResponseDataAsString())
// 変数に代入
var foo = body.foo
var hoge = body.hoge
// ログを出力
log.info('foo: ' + foo)
log.info('hoge: ' + hoge)
// パラメータにセット
vars.put('foo', foo)
vars.put('hoge', hoge)

2行目でJSONを取得できたら、あとはJSの処理なのでJSが書ければ問題ないと思います!
パラメータを利用する
13, 14行目でセットしたパラメータは別のリクエストで${foo}, ${hoge}のように利用することができます。

これで別のリクエストでレスポンスを利用することができますね!
あとがき
正規表現よりもわかりやすくて扱いやすいので良いですね!
本当はJSON Extractorというのを使ってみたかったけどよくわからなかった…
でも結果としてはこれで満足!