2014-07-23 29 views
0

我试图从这个响应security_token变换:加特林相结合的jsonpath

{}&&{"containers":{"userID":"p8admin","connected":true,"desktop":"icm"}, 
    "userid":"p8admin", 
    "user_displayname": "p8admin", 
    "security_token":"-1829880900612241155", 
    "messages":[{"adminResponse":null, 
        "moreInformation":null, 
        "explanation":null, 
        "number":"0", 
        "userResponse":null, 
        "text":"p8admin connect\u00e9." 
       }] 
    } 

我试着变换组合和jsonPath:

.check(bodyString.transform(_.split("&&")(1)).jsonPath("&.security_token").saveAs("security_token")) 

,但我得到这个错误:

value jsonPath is not a member of com.excilys.ebi.gatling.core.check.MatcherCheckBuilder 

让我知道是否有一个简单的方法来实现这一点。

感谢

回答

0

从上检查文档:

This API provides a dedicated DSL for chaining the following steps:

  1. defining the check
  2. extracting
  3. transforming
  4. verifying
  5. saving

因为响应不是有效的JSON,你需要使用bodyString作为类型。然后,您可以转换并保存,但不能返回到步骤1.您可以在transform步骤中解析出您需要的JSON值。

正如Stéphane指出的,获取该值的最简单方法是使用regex检查并直接提取security_token值,只要您不需要其他JSON对象用于任何逻辑。

+0

最简单的解决方案可能是在这里使用正则表达式。 –

+0

嗯,我没有找到正则表达式,我需要从这种类型的响应后面提取其他信息,我想这样的事情:'.transform(JSON.parseFull(_。toString.substring(4)) .security_token)'但是刚刚移动到2.0.0-M3a,变换不再需要一个字符串。顺便说一句,我真的不熟悉scala语法,对不起。 –

+0

寻找这里:[https://groups.google.com/forum/#!msg/gatling/qErj87jujGQ/2VPUmW83n5AJ]外部化它似乎更容易:'val extractToken =(transformation:Option [String])=> { val stringResponse = transformation.toString.substring(4) val jsonResponse = JSON.parseFull(stringResponse) jsonResponse.security_token }'但我得到一个错误:多态表达式不能实例化 –