madusanka
madusanka

Reputation: 23

Karate - Exception raises for invalid jsonpath

I have a Json response like below. The difference here is my Json body has a number as the parent node.

    def response =
"""
{
  "22388043":[
    {
      "firstName":"Romin",
      "lastName":"Irani",
      "phoneNumber":"408-1234567",
      "emailAddress":"[email protected]"
    }
  ]
}
"""

I want to return the mobileNumber attribute value from the response body. In this scenario I don't have that attribute in my response. So here I want to get a null value.

So when I use * def mobile = $.22388043[0].mobileNumber, I'm getting below error.

No results for path: $['22388043'][0]['mobileNumber']

Please advise on this.

Upvotes: 1

Views: 251

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58153

Karate does give you a way to get the values of JSON keys.

Hopefully this example answers all your other questions as well:

* def response =
"""
{
  "22388043":[
    {
      "firstName":"Romin",
      "lastName":"Irani",
      "phoneNumber":"408-1234567",
      "emailAddress":"[email protected]"
    }
  ]
}
"""
* def id = karate.keysOf(response)[0]
* match id == '22388043'
* def person = response[id][0]
* match person contains { firstName: 'Romin', lastName: 'Irani' }
* match person.mobileNumber == '#notpresent'

Upvotes: 1

Related Questions