Forum Discussion

henil_shah's avatar
henil_shah
Contributor
6 years ago

How to assert array response

[
{
"id" : "1234",
"name":"xyz"
},
"jsonfield1" : {
"jsonfield" : "xyz"
}
}
]

 

I got this response of my API. I dont know how to assert array.

Generally, I store in hashmap

 

def response_string = messageExchange.response.responseContent

def response_slurper = new JsonSlurper()
def response_hashmap = response_slurper.parseText(response_string)

assert response_hashmap.id =="123"

Its failing here since its an array. 

 

Looking for a snippet.

4 Replies

  • TNeuschwanger's avatar
    TNeuschwanger
    Champion Level 2

    Hello,

     

    I would supply a snippet, but i cannot validate the json you presented in your sample...  the json editors I dropped your json into all returned a parse error.  The json sluper in SoapUI could not parse either.  Did you hand code the example or cut and paste directly from API response?  I cannot reproduce with your supplied sample.

     

    Regards.

    • henil_shah's avatar
      henil_shah
      Contributor

      Hi Todd,

       

      This is the correct JSON

      [{
      "id": "1234",
      "name": "xyz",
      "jsonfield1": {
      "jsonfield": "xyz"
      }
      }]

      • TNeuschwanger's avatar
        TNeuschwanger
        Champion Level 2

        Hello henil_shah,

         

        I think just adding an element number of the array/list to the assertion will work for you.  Groovy script sample below.

         

        Regards

        import groovy.json.*;
        
        def jsonSampletxt = '''
        [{
        "id": "1234",
        "name": "xyz",
        "jsonfield1": {
        "jsonfield": "xyz"
        }
        }]
        ''';
        
        def jsonSampleobj = new JsonSlurper().parseText(jsonSampletxt);
        jsonSampleobj.each { item ->
           log.info 'item=' + item.toString();
        };
        log.info 'jsonSampleobj.size()= ' + jsonSampleobj.size();
        log.info ' ';
        log.info 'jsonSampleobj.id=' + jsonSampleobj.id;
        log.info 'jsonSampleobj.id[0]=' + jsonSampleobj.id[0];
        log.info 'jsonSampleobj.name=' + jsonSampleobj.name;
        log.info 'jsonSampleobj.name[0]=' + jsonSampleobj.name[0];
        
        assert jsonSampleobj.id[0] == '1234', "Element 0 of .id Array/List should be equal to '1234'";
        assert jsonSampleobj.name[0] == 'xyz', "Element 0 of .name Array/List should be equal to 'xyz'";
        
        log.info 'Test Step "' + testRunner.runContext.currentStep.name + '" done...';