长度在 Jmeter 的 JSON Extractor 中不起作用
Length is not worked in JSON Extractor in Jmeter
我需要从 json 文件中获取卡的数量。为此,我使用了 $.storedCards.cards.lenght
在 JSON 提取器中,但它不起作用。出现错误消息:
Options AS_PATH_LIST and ALWAYS_RETURN_LIST are not allowed when using path functions!
之后,我在 goovy 上尝试使用 JSR223 PostProcessor 和下一个脚本
def jsonText = '''${AllCards}''' //${AllCards} has json value
def json = new JsonSlurper().parseText(jsonText)
log.info( "Json length---------->"+json.resource.size())
${CardsCount} = props.get("4") //vars.put(json.resource.size.toString())
但是我的变量设置值有问题。或者当我在 Groovy 中创建变量时,无法在脚本外部使用。
我的json文件
"storedCards":
{
"cards":
[
{
"CardId":"123",
"cardBrand":"Visa",
"lastFourDigits":"2968",
},
{
"CardId":"321",
"cardBrand":"Visa",
"lastFourDigits":"2968",
},
..........
],
我怎样才能得到卡片的数量并设置到我的变量中?我应该为此使用什么?
您的 JSON 数据似乎无效。假设您有如下有效的 JSON,我正在回答您的问题。
{
"storedCards": {
"cards": [
{
"CardId": "123",
"cardBrand": "Visa",
"lastFourDigits": "2968"
},
{
"CardId": "321",
"cardBrand": "Visa",
"lastFourDigits": "2968"
}
]
}
}
您不需要编写 Groovy 代码,您可以使用 JSON Extractor 解决此问题。不要使用长度函数,而是像这样使用 JSON 路径谓词-
$.storedCards.cards[*]
虽然您在 JSON Extractor 中使用的变量不会立即给出解决方案,但另一个 JMeter 函数可以提供帮助 - __RandomFromMultipleVars
文档摘录 -
The RandomFromMultipleVars function returns a random value based on the variable values provided by Source Variables.
The variables can be simple or multi-valued as they can be generated by the following extractors:
Boundary Extractor
Regular Expression Extractor
CSS Selector Extractor
JSON Extractor
XPath Extractor
XPath2 Extractor
Multi-value vars are the ones that are extracted when you set -1 for
Match Numbers. This leads to creation of match number variable called
varName_matchNr and for each value to the creation of variable
varName_n where n = 1, 2, 3 etc.
所以一旦你使用谓词,你就会在yourVariableName_matchNr中得到计数。示例:-
希望对您有所帮助。
我需要从 json 文件中获取卡的数量。为此,我使用了 $.storedCards.cards.lenght
在 JSON 提取器中,但它不起作用。出现错误消息:
Options AS_PATH_LIST and ALWAYS_RETURN_LIST are not allowed when using path functions!
之后,我在 goovy 上尝试使用 JSR223 PostProcessor 和下一个脚本
def jsonText = '''${AllCards}''' //${AllCards} has json value
def json = new JsonSlurper().parseText(jsonText)
log.info( "Json length---------->"+json.resource.size())
${CardsCount} = props.get("4") //vars.put(json.resource.size.toString())
但是我的变量设置值有问题。或者当我在 Groovy 中创建变量时,无法在脚本外部使用。
我的json文件
"storedCards":
{
"cards":
[
{
"CardId":"123",
"cardBrand":"Visa",
"lastFourDigits":"2968",
},
{
"CardId":"321",
"cardBrand":"Visa",
"lastFourDigits":"2968",
},
..........
],
我怎样才能得到卡片的数量并设置到我的变量中?我应该为此使用什么?
您的 JSON 数据似乎无效。假设您有如下有效的 JSON,我正在回答您的问题。
{
"storedCards": {
"cards": [
{
"CardId": "123",
"cardBrand": "Visa",
"lastFourDigits": "2968"
},
{
"CardId": "321",
"cardBrand": "Visa",
"lastFourDigits": "2968"
}
]
}
}
您不需要编写 Groovy 代码,您可以使用 JSON Extractor 解决此问题。不要使用长度函数,而是像这样使用 JSON 路径谓词-
$.storedCards.cards[*]
虽然您在 JSON Extractor 中使用的变量不会立即给出解决方案,但另一个 JMeter 函数可以提供帮助 - __RandomFromMultipleVars
文档摘录 -
The RandomFromMultipleVars function returns a random value based on the variable values provided by Source Variables. The variables can be simple or multi-valued as they can be generated by the following extractors:
Boundary Extractor Regular Expression Extractor CSS Selector Extractor JSON Extractor XPath Extractor XPath2 Extractor
Multi-value vars are the ones that are extracted when you set -1 for Match Numbers. This leads to creation of match number variable called varName_matchNr and for each value to the creation of variable varName_n where n = 1, 2, 3 etc.
所以一旦你使用谓词,你就会在yourVariableName_matchNr中得到计数。示例:-
希望对您有所帮助。