Background:
I have an API that returns a response like so:
{
"status": 1,
"errorCode": null,
"message": null,
"data": [
{
"id": 33,
"snapshotId": 2,
"ceId": 29,
"month": "Feb",
"corpRcvPayAmt": 100000,
"wthRcvPayAmt": -90000
},
{
"id": 31,
"snapshotId": 2,
"ceId": 29,
"month": "Jan",
"corpRcvPayAmt": 0,
"wthRcvPayAmt": 0
}
]
}
The data
node can vary from 0 size to 12 (empty to 1 per month). The only constant field for data
is the "month"
node. Other field values are changing.
Goal:
I want to do either a PUT
or a POST
request, depending on whether or not a specific month is already present in data
.
For this, I'm capturing the entire data
field into a variable using a Regular Expression Extractor like this:
With the sample response above, calling ${data}
will give me {"id":33,"snapshotId":2,"ceId":29,"month":"Feb","corpRcvPayAmt":100000.00,"wthRcvPayAmt":-90000.00},{"id":31,"snapshotId":2,"ceId":29,"month":"Jan","corpRcvPayAmt":0.00,"wthRcvPayAmt":0.00}
Now using this field, I just want to do a simple if condition like so: if ${data}
contains ${month}
do something (PUT request). I'm currently trying to do it like this:
Problem:
The condition ${__groovy("${data}".contains("Jan"))}
does not seem to work.
I've already tried doing the following:
${__groovy("${month}".contains("Jan"))}
just to see if the syntax is correct. This works just fine.
${__groovy("${month}".contains("Jan"))}
to print ${data}
. This also prints the data as expected.
With this I can confirm the following:
${month}
and ${data}
are extracted and stored properly
${__groovy("${data}".contains("Jan"))}
is not working.
What am I missing here? Thanks in advance.