长度在 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中得到计数。示例:-

希望对您有所帮助。