SMor
SMor

Reputation: 35

SoapUI: Count Nodes Returned in JSON Array Response

I've learned so much using SoapUI, but, I'm just stuck on this one thing. I have the following payload returned:

[
      {
      "@c": ".CreditPaymentInfo",
      "supplementalInfo": null,
      "date": "06/30/2015 17:03:50",
      "posTxCode": "107535",
      "amt": 2.56,
      "transactionId": 235087,
      "id": 232163,
      "cardType": "CREDIT",
      "cardHolderName": "SMITH2/JOE",
      "expMonthYear": "0119",
      "lastFourDigits": "4444",
      "approvalCode": "315PNI",
      "creditTransactionNumber": "A71A7DB6C2F4"
   },
      {
      "@c": ".CreditPaymentInfo",
      "supplementalInfo": null,
      "date": "07/01/2015 15:53:29",
      "posTxCode": "2097158",
      "amt": 58.04,
      "transactionId": 235099,
      "id": 232176,
      "cardType": "CREDIT",
      "cardHolderName": "SMITH2/JOE",
      "expMonthYear": "0119",
      "lastFourDigits": "4444",
      "approvalCode": "",
      "creditTransactionNumber": null
   }
]

I would like to count how many nodes are returned... so, in this case, I would expect that 2 nodes be returned whenever I run this test step in SoapUI.

I was attempting to get this done using the JsonPath Count assertion, but, I just can't see to format it correctly.

Any help would be greatly appreciated!

Upvotes: 1

Views: 5320

Answers (4)

Christian B.
Christian B.

Reputation: 51

Counted successfully with 'JsonPath count' using one of the following (assuming my top level object is an array) :

$
$.
$[*]

If you need to be more specific on the objects you're counting, you can rely only on the 3rd syntax, specifying one of the redundant field. One of the following worked for me :

$[*].fieldName
$[*].['fieldName']

Should return 2 in your case with one of the following :

$[*].@c
$[*].['@c']
$[*].id
$[*].['id']

And so on

Upvotes: 2

Ryan Roberts
Ryan Roberts

Reputation: 1

$[index].your.path.here

thus

$[0].date would return "06/30/2015 17:03:50"

and

$[1].date would return "07/01/2015 15:53:29"

Upvotes: -1

fazlook1
fazlook1

Reputation: 139

This is a JSON format. Just use JsonPath Count. Use $ at the top and 2 at the bottom.

Upvotes: -1

SiKing
SiKing

Reputation: 10329

I have not used JsonPath, but you can do this with XPath ... which works for all older versions too.

Internally SoapUI represents everything as XML. So you could use XPath assertion to check for:

${#ResponseAsXml#count(//*:id)}

and make sure it comes back as

2

Upvotes: 2

Related Questions