Reputation: 1041
I am relatively new to Rest-assured and Gpath. From the JSON below, I just want to get a map with the keys / values for 'RideA'
[{
"state": "open",
"name": "RideA",
"imageCount": 2
},
{
"state": "open",
"name": "RideB",
"imageCount": 1
},
{
"state": "open",
"name": "RideC",
"imageCount": 2
}]
so far I have tried:
final List<Map<String, ?>> object = from(json).get("it.findAll { it.name == 'RideA' }");
but this returns java.lang.IllegalArgumentException: Cannot get property 'name' on null object , so I think there is something wrong with my syntax
The code below works, but I have to look up the elements with the list by their ordinal number (in this case '0'), when I want to look them up by the 'name' field
final List<Map<String,?>> object = from(json).get("");
assertThat(object.get(0).get("name"), IsEqual.<Object>equalTo("RideA"));
any help is much appreciated!
Upvotes: 1
Views: 1569
Reputation: 1041
I finally managed to figure this out, thanks to help from Johan Haleby.
firstly there was a slight error in my first statement, I should have just been looking for a Map, and not a List of Maps.
final Map<String, ?> object = from(json).get("it.findAll { it.name == 'RideA' }");
'findAll' returns a list, so that would not be correct in this case.
The correct statement in this case would be:
final Map<String, ?> object = from(json).get("find { it.name == 'RideA'}");
Upvotes: 2