我正在尝试编译一个字符串,如:
val route = "this/is/my/url/${body2.id}"
其中body2是来自先前请求的json响应。
所以我尝试用以下代码编译这个字符串:
val routeExpression = (route).el[String]
我在这个问题上看到了:Getting the String out of a Gatling expression
我应该这样做:
def getRoute = {
routeExpression.map { route => route }
}
但此函数返回验证[Expression [String]]。我怎么能得到编译的字符串?
干杯。
答案 0 :(得分:0)
最后问题不在于问题。实际上我在会话中保存了所有json。但问题是像$ {body2.id}这样的表达只有在会话属性如下时才有效:
Map(body2 -> Map(id -> 45787))
但我的是
Map(body2 -> "{ id: 45787 }")
所以我使用杰克逊库来解析我的json将其转换为地图,它解决了这个问题。
只需要指定类型为Stephane Landelle说:
check(jsonPath(" $")。ofType [Map [String,Any]]。saveAs(" myJson"))
答案 1 :(得分:0)
即使这确实是一个古老的问题,但由于我也为此而苦苦挣扎,因此我应该给出用例。
最好先转换json到地图(使用jackson),然后再使用它。
def jsonToMap(jsonContent: Expression[String]): Expression[Map[String, Object]] = {
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
jsonContent.map { json =>
mapper.readValue(json, classOf[Map[String, Object]])
}
}
def getRoute(bodyMap: Expression[Map[String, Object]]): Expression[String] = {
bodyMap.map { body2 =>
"this/is/my/url/${body2.id}"
}
}