REST サービスの応答から取得した JSON 配列をループする必要があるコードのブロックがあります。(完全な要旨はこちらから入手できます。)
.exec(http("Request_1")
.post("/endPoint")
.headers(headers_1)
.body(StringBody("""REQUEST_BODY""")).asJSON
.check(jsonPath("$.result").is("SUCCESS"))
.check(jsonPath("$.data[*]").findAll.saveAs("pList")))
.exec(session => {
println(session)
session
})
.foreach("${pList}", "player"){
exec(session => {
val playerId = JsonPath.query("$.playerId", "${player}")
session.set("playerId", playerId)
})
.exec(http("Request_1")
.post("/endPoint")
.headers(headers_1)
.body(StringBody("""{"playerId":"${playerId}"}""")).asJSON
.check(jsonPath("$.result").is("SUCCESS")))
}
最初のリクエストのレスポンス形式は
{
"result": "SUCCESS",
"data": [
{
"playerId": 2
},
{
"playerId": 3
},
{
"playerId": 4
}
]
}
そしてplayerId
、セッションに次のように表示されます
pList -> Vector({playerId=2, score=200}, {playerId=3, score=200}
2番目のリクエストで、本文が表示されています
{"playerId":"Right(empty iterator)}
予想: 本文が次の 3 つのリクエスト
{"playerId":1}
{"playerId":2}
{"playerId":3}
playerIds だけを保存すると、結果の配列を正常にループできます。
.check(jsonPath("$.data[*].playerId").findAll.saveAs("pList")))