1

我对 Rest-assured 和 Gpath 比较陌生。从下面的 JSON 中,我只想得到一张包含“ RideA ”键/值的地图

[{
"state": "open",    
"name": "RideA",
"imageCount": 2
}, 
{
"state": "open",
"name": "RideB",    
"imageCount": 1    
},
{
"state": "open",    
"name": "RideC",    
"imageCount": 2
}]

到目前为止,我已经尝试过:

final List<Map<String, ?>> object = from(json).get("it.findAll { it.name == 'RideA' }");

但这会返回java.lang.IllegalArgumentException: Cannot get property 'name' on null object,所以我认为我的语法有问题

下面的代码有效,但是当我想通过“名称”字段查找它们时,我必须通过它们的序号(在本例中为“0”)来查找带有列表的元素

final List<Map<String,?>> object = from(json).get("");
assertThat(object.get(0).get("name"), IsEqual.<Object>equalTo("RideA"));

任何帮助深表感谢!

4

1 回答 1

2

多亏了 Johan Haleby 的帮助,我终于设法解决了这个问题。

首先,我的第一个陈述中有一个小错误,我应该只是在寻找地图,而不是地图列表。

final Map<String, ?> object = from(json).get("it.findAll { it.name == 'RideA' }");

'findAll' 返回一个列表,因此在这种情况下是不正确的。

在这种情况下,正确的说法是:

final Map<String, ?> object = from(json).get("find { it.name == 'RideA'}");
于 2015-05-18T10:43:17.993 回答