java - 放心地从未命名的根查找对象

标签 java json rest-assured gpath

我对 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/

相关文章:

java - 网站无法显示土耳其语字符。 Tomcat 服务器,Mysql 数据库

java - HIbernate OneToMany FetchType.EAGER 不返回值

python - 如何在Python中将字符串添加到JSON列表中

jquery - 使用 GET 从 jqGrid 中的列值链接到新页面

java - 此 Java UUID5 实现未通过单元测试

java - 向服务器发送 JSON 会给出 415 不支持的媒体类型

java - 使用放心 put 方法测试 api 时出现错误请求 400 和反序列化错误

rest-assured - java.lang.NoClassDefFoundError : io/restassured/mapper/factory/GsonObjectMapperFactory

java - 如何禁用 REST-Assured 调试打印到控制台?

java - 是否可以使用 Lambda 而不是匿名类来创建新对象?