SoapUI: Count Nodes Returned in JSON Array Response

烈酒焚心 提交于 2019-12-11 12:40:24

问题


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!


回答1:


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



回答2:


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




回答3:


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




回答4:


$[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"


来源:https://stackoverflow.com/questions/31569651/soapui-count-nodes-returned-in-json-array-response

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!