如何将列表(会话(字符串属性))传递给逻辑Create a Bulk Json Request in Gatling Scala

从对这种请求的响应中,我保存了List(String1...StringN)个会话属性

    .exec(http("Find Perftest")
      .get("/Perftest")
      .queryParam("PerftestId", PerftestId)
      .check(jsonPath("$.results[*].name").findAll.saveAs("PerfName"))
      .check(jsonPath("$.results[*].id").findAll.saveAs("PerfID"))
      .check(jsonPath("$.results[*].type.id").findAll.saveAs("TypeID"))
      .check(status.is(200)))

我正在try 从保存的会话属性(列表)构建动态批量JSON请求

    .exec { session =>
      val PerfNamex = session("PerfName").as[List[String]]
      val PerfIDx = session("PerfID").as[List[String]]
      val TypeIDx = session("PerfID").as[List[String]]
      val i =0
      val data1 = (i  to 2)
        .map { r =>
          Json.toJson(Map(
            "name" -> Json.toJson(s"${PerfName(i)}"),
            "assetId" -> Json.toJson(s"${PerfIDx(i)}"),
            "typeId" -> Json.toJson(s"${TypeIDx(i)}"))   }

      val data2 = Json.toJson(data1)
      session
    }

将创建的批量Json传递给以下请求

    .exec(http("exec Bulk Perftest")
      .post("/Perftest/bulk")
      .body(StringBody(session =>
        s"""${session("data2")}""".stripMargin)).asJson)

Error Bulk Json Request:

body:StringRequestBody{charset=UTF-8, content=SessionAttribute(Session(Bulkperftestexe,1,HashMap(gatling.http.cache.baseUrl -> http://ppppp/pp, TestID -> Vector(ed811977, bd34bc09), gatling.http.cache.dns -> io.gatling.http.resolver.ShufflingNameResolver@53184a5c, gatling.http.ssl.sslContexts -> io.gatling.http.util.SslContexts@226d7a8c, gatling.http.referer -> http://PPPP/PP, TypeID -> Vector(00002600, 00000089), gatling.http.cookies -> CookieJar(Map(CookieKey(jsessionid,**,/) -> StoredCookie(JSESSIONID=yffgfffgdfgjhfghjfghfghfgjhfsss, path=/, HTTPOnly,true,false,1665496888776),data2)}```

预期

[
{"name": "PerfTest1445", "id" : 13424, "typeid": 4566}, // values should be from list session attributes
{"name": "PerfTest4344", "id" : 10011, "typeid": 3423},
{"name": "PerfTest0055", "id" : 45633, "typeid": 5456}
]

请建议一个解决方案,以根据先前响应中保存的会话属性(列表字符串)创建批量JSON请求

推荐答案

您需要设置会话值 Session.set("data2",data2)

并将data2转换为字符串

  .body(StringBody(session =>
    s"""${session("data2").as[String]}""".stripMargin)).asJson)

Json相关问答推荐

如何在Haskell中解析JSON,其中字段的名称可以是多个值之一,但应该转换为单个Haskell类型?

使用JQ从jsonl文件中删除具有匹配键/值的行

Spark-SQL中的from_unixtime函数未能给出正确的输出

JOLT JSON 将值从一对多转换为一对一

阅读 JSON 正文 Firebase 云函数

JOLT 在 struct 体中间添加一个 JSON 字段

使用 Jolt 使用键中的值创建带有硬编码键和值的 JSON 数组

解析 JSON API 响应

Angular 2/Web Api - json 解析错误语法错误意外结束输入

JSON.NET 中特定对象的自定义转换

Jackson 的@JsonView、@JsonFilter 和 Spring

如何在golang中获取 struct 的json字段名称?

如何从 HttpClient 解析 JSON 字符串?

Laravel5 Json 获取文件内容

在 JSON 反序列化期间没有为System.String类型定义无参数构造函数

如何创建 JSON 对象 Node.js

如何在已声明的 JSON 对象中添加键值对

Json.NET 是否缓存类型的序列化信息?

如何将 mysqli 结果转换为 JSON?

从动态 json 数据更新力有向图上的链接