Regex 正则表达式JSON响应Gatling压力工具
希望在http响应中捕获名为scanNumber的变量,如下所示:Regex 正则表达式JSON响应Gatling压力工具,regex,json,scala,http,gatling,Regex,Json,Scala,Http,Gatling,希望在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
{"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"}]}}
.check(jsonPath("""${scanNumber}""").saveAs("scanNr")))
我怎样才能用常规费用做到这一点?
我使用的工具是带有Scala DSL的Gatling应力工具
我试着这样做:
{"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"}]}}
.check(jsonPath("""${scanNumber}""").saveAs("scanNr")))
但我得到了一个错误:
---- Errors --------------------------------------------------------------------
> Check extractor resolution crashed: No attribute named 'scanNu 5 (100,0%)
mber' is defined
使用此正则表达式在json中的任意位置匹配:
/"scanNumber":"[^"]+"/
如果你想匹配你说的结构中发生的事情,请使用:
/\{[^{[]+\{[^{[]+\[\{[^{[]*("scanNumber":"[^"]+")/
使用此正则表达式在json中的任意位置匹配:
/"scanNumber":"[^"]+"/
如果你想匹配你说的结构中发生的事情,请使用:
/\{[^{[]+\{[^{[]+\[\{[^{[]*("scanNumber":"[^"]+")/
由于json字段可能会更改其顺序,因此您应该使正则表达式更能容忍这些更改:
即使json字段的顺序不同,这也会起作用,但当然要保持结构,因为json字段可能会改变其顺序。您应该让您的正则表达式更能容忍这些变化:
即使json字段的顺序不同,这也会起作用,但当然要保留第一次关闭时的结构 你真正想要的是:
.check(jsonPath("""$..scanNumber""").saveAs("scanNr")))
或者可能:
.check(jsonPath("""$.profile.memberships[0].scanNumber""").saveAs("scanNr")))
注意,这使用的是jsonPath,而不是正则表达式。在这方面,JsonPath应该比regex更可靠
查看以了解更高级的用法。您第一次就接近了 你真正想要的是:
.check(jsonPath("""$..scanNumber""").saveAs("scanNr")))
或者可能:
.check(jsonPath("""$.profile.memberships[0].scanNumber""").saveAs("scanNr")))
注意,这使用的是jsonPath,而不是正则表达式。在这方面,JsonPath应该比regex更可靠
查看以了解更高级的用法