簡體   English   中英

正則表達式JSON響應加特林壓力工具

[英]Regex JSON response Gatling stress tool

想要在http響應中捕獲一個名為scanNumber的變量,如下所示:

{"resultCode":"SUCCESS","errorCode":null,"errorMessage":null,"profile":{"fullName":"TestFirstName TestMiddleName TestLastName","memberships":[{"name":"UA Gold Partner","number":"123-456-123-123","scanNumber":"123-456-123-123"}]}}

如何定期進行這項工作? 我使用的工具是Gatling壓力工具(使用Scala DSL)

我試過這樣做:

.check(jsonPath("""${scanNumber}""").saveAs("scanNr")))

但我得到錯誤:

---- Errors --------------------------------------------------------------------
> Check extractor resolution crashed: No attribute named 'scanNu      5 (100,0%)
mber' is defined

你是第一次接近。

你真正想要的是:

.check(jsonPath("""$..scanNumber""").saveAs("scanNr")))

或者可能:

.check(jsonPath("""$.profile.memberships[0].scanNumber""").saveAs("scanNr")))

請注意,這使用jsonPath,而不是正則表達式。 JsonPath應該比regex更可靠。

查看JsonPath規范以獲得更高級的用法。

使用這個正則表達式來匹配json中的任何地方:

/"scanNumber":"[^"]+"/

如果你想匹配只是發生在結構你說使用:

/\{[^{[]+\{[^{[]+\[\{[^{[]*("scanNumber":"[^"]+")/

由於json字段可能會更改其順序,因此您應該使正則表達式更容忍這些更改:

val j = """{"resultCode":"SUCCESS","errorCode":null,"errorMessage":null,"profile":{"fullName":"TestFirstName TestMiddleName TestLastName","memberships":[{"name":"UA Gold Partner","number":"123-456-123-123","scanNumber":"123-456-123-123"}]}}"""
val scanNumberRegx = """\{.*"memberships":\[\{.*"scanNumber":"([^"]*)".*""".r
val scanNumberRegx(scanNumber) = j

scanNumber //String = 123-456-123-123

即使json字段的順序不同(但當然保留結構),這也可以工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM