因此,我执行POST调用并获得一些对象作为回报。我想提取并创建一个键值对,并将其保存在会话中以供以后使用。
我当前的代码如下:
.exec(http(“Rest call“)
.post("/api")
.body(ElFileBody("json/api.json")).asJson
.check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].id").findAll.saveAs(“id”))
.check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].name”).findAll.saveAs(“name”))
这里我在会话中得到两个列表(向量),分别是“ id”和“ name”。我想做的是改为创建一个ID /名称的键/值对列表。显然,这些对应该与相同的jsonpath匹配。
最简单的方法是在会话函数中使用scala的集合压缩
.exec(http(“Rest call“)
.post("/api")
.body(ElFileBody("json/api.json")).asJson
.check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].id").findAll.saveAs(“id”))
.check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].name”).findAll.saveAs(“name”)
)
.exec(session => {
var ids = session("id").as[Seq[String]]
var names = session("name").as[Seq[String]]
session.set("pairs", ids zip names)
})
这将设置一个称为“ pairs”的会话变量,其内容为Tuple2的列表
签出https://alvinalexander.com/scala/how-to-merge-sequential-collection-pairs-zip-unzip-scala-cookbook