2014-07-23 23 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 }'但我得到一個錯誤:多態表達式不能實例化 –