【问题标题】:Gatling Transform a Json ResponseGatling 转换 Json 响应
【发布时间】:2021-06-26 09:16:25
【问题描述】:

如何将 JSON 响应正文从 -

{
    "data": [
      {
        "id": "1",
        "isEditable": false
      },
      {
        "id": "2",
        "isEditable": true
      }
      ]
}

到这里-

{
    "data": [
{
        "id": "2",
        "isEditable": true
      }
      ]
}

我们如何在这里使用.transformResponse 来做同样的事情?

任何帮助将不胜感激。

【问题讨论】:

    标签: json scala gatling


    【解决方案1】:

    像函数一样构建转换器:

      (Session, Response) => Validation[Response]
    

    例如:

      import io.gatling.http.response.{Response, StringResponseBody}
      import org.json4s._
      import org.json4s.jackson.Serialization.write
      import org.json4s.jackson.JsonMethods._
    
      implicit val formats: Formats = DefaultFormats
    
      case class Item(id: String, isEditable: Boolean)
      case class BodyResponse(data: List[Item])
    
      def transformFunction: (Session, Response) => Validation[Response] =
        (sess: Session, response: Response) => {
          val updatedBody = (parse(response.body.string)).extract[BodyResponse]
          response.copy(
            body = new StringResponseBody(
              write(updatedBody.copy(data = List(updatedBody.data.last))),
              Charset.forName("UTF-8")))
        }
    

    并应用于 ProtocolBuilder:

    http
    .baseUrl("http://host") // Here is the root for all relative URLs
    .transformResponse(transformFunction)
    

    请注意,我使用了 Gatling 附带的 json4s 和两种类型来解析和操作响应。您也可以直接查询没有这些类型的 Json。

    【讨论】:

    • 请注意现代 Gatling 版本不再依赖 json4s。您必须明确导入它。
    • @EmiCareOfCell44 我无法导入 json4s。
    • 正如@StéphaneLANDELLE 所说。在项目中包含 json4s 依赖项
    猜你喜欢
    • 2017-03-25
    • 2020-09-22
    • 2014-11-04
    • 2011-06-03
    • 2021-09-04
    • 2019-09-26
    • 2016-05-11
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多