所以我执行了一个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”))
在这里,我在会话中得到了两个列表(Vectors),"id“和"name”。我想要做的是创建一个id/name的键/值对的列表。显然,这些对应该与相同的jsonpath命中相关联。
发布于 2019-10-23 19:35:45
最简单的方法是在会话函数中使用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)
})
这将设置一个名为“Tuple2”的会话变量,其内容为一列Tuple2
查看https://alvinalexander.com/scala/how-to-merge-sequential-collection-pairs-zip-unzip-scala-cookbook
https://stackoverflow.com/questions/58520442
复制相似问题