放心查找未命名的Root中的对象

时间:2015-05-06 10:05:03

标签: java json rest-assured gpath

我对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:无法获取属性&#39; name&#39;在null对象,所以我认为我的语法

有问题

以下代码有效,但我必须按照序号查找列表中的元素(在本例中为&#39; 0&#39;),当我想通过&#39;命名&#39;字段

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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'}");