Kirill Kiselev
Kirill Kiselev

Reputation: 83

Length is not worked in JSON Extractor in Jmeter

I need to get the count of card from json file. For this I've used $.storedCards.cards.lenght in JSON Extractor but it doesn't work. There is an error message:

Options AS_PATH_LIST and ALWAYS_RETURN_LIST are not allowed when using path functions!

After that I've tried JSR223 PostProcessor with next script on goovy

 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())

but there is problem with set value to my variable. Or when i've created variable in Groovy it was impossible to use outside from script.

My json file

    "storedCards":
    {
        "cards":
        [
            {
                "CardId":"123",
                "cardBrand":"Visa",
                "lastFourDigits":"2968",
               },
            {
                "CardId":"321",
                "cardBrand":"Visa",
                "lastFourDigits":"2968",
              },
     ..........
        ],

How can i get the count of card and set to my Variables? what should i use for this?

Upvotes: 0

Views: 1194

Answers (1)

Amol Chavan
Amol Chavan

Reputation: 3980

Your JSON data seems to be invalid. Assuming you have the valid JSON like below, I'm answering your question.

{
    "storedCards": {
        "cards": [
            {
                "CardId": "123",
                "cardBrand": "Visa",
                "lastFourDigits": "2968"
            },
            {
                "CardId": "321",
                "cardBrand": "Visa",
                "lastFourDigits": "2968"
            }
        ]
    }
}

You dont need to write Groovy code, you can resolve this using JSON Extractor. Instead of using length function, use JSON path predicate like this-

$.storedCards.cards[*]

Though Variable you used in JSON Extractor won't give the solution right away, another JMeter function helps - __RandomFromMultipleVars

Excerpt from documentation -

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.

So once you use the predicate, you will get the count in the yourVariableName_matchNr. Example:-

enter image description here

enter image description here

Hope this help.

Upvotes: 1

Related Questions