我对 Rest-assured 和 Gpath 还比较陌生。从下面的 JSON 中,我只想获取包含“RideA”的键/值的 map
[{
"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"));
非常感谢任何帮助!
最佳答案
在 Johan Haleby 的帮助下,我终于弄清楚了这一点。
首先,我的第一个语句中有一个小错误,我应该只是寻找 map ,而不是 map 列表。
final Map<String, ?> object = from(json).get("it.findAll { it.name == 'RideA' }");
“findAll”返回一个列表,因此在本例中这是不正确的。
本例中正确的说法是:
final Map<String, ?> object = from(json).get("find { it.name == 'RideA'}");
关于java - 放心地从未命名的根查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073555/