API返回一个带有json对象的array.我想判断数组中是否存在具有特定键值条目的对象.当值类型不同时,im使用的方法不起作用.

"$", hasItem(
    allOf(
            hasEntry("id", "someid123"),
            hasEntry("age", 99)
    )
 );

我的IDE出现错误:无法解析方法‘Allof(Matcher<Map<?扩展K,?扩展V>>,Matcher<映射<?扩展K,?扩展V>>)’

如果99是一个字符串,则此方法可以工作,但在本例中,我无法控制API返回一个数字.有谁知道怎么做这件事吗?

我正在try 解析的响应正文示例:

[ { "id":"某个123", 年龄:99岁 }, { "id":"另一个789", 年龄:77岁 } ]

我认为,这些对象会在内部转换为Java映射.

推荐答案

这是Java泛型所特有的,它可以(它们实际上也确实这样做了)对齐方法的参数类型.

您可以在JsonPath的帮助下解决这个问题,如下所示:

public static void main(String[] args) {
    RestAssured.baseURI = "http://demo1954881.mockable.io";
    Response resp =
            given().
                    when().get("/collectionTest")
                    .then().extract().response();
    resp.then()
        .body("findAll{i -> i.id == 'someid123' && i.age == 99}", not(empty()));
}

因此,基本上是在JsonPath的帮助下过滤集合,然后断言它不是空的.

Java相关问答推荐

try Dockerize Maven应用程序,但发布版本21不支持"

查找最大子数组的和

JsonPath在多个线程中返回错误的值

了解Android Studio中的调试器输出

使用标记时,场景大纲不在多个线程上运行

解析Javadoc时链接的全限定类名

如何创建同一类的另一个对象,该对象位于变量中?

这是什么Java构造`(InputStream Is)->;()->;{}`

使用GridBagLayout正确渲染

Bean定义不是从Spring ApplationConext.xml文件加载的

具有阻塞方法的开源库是否应该为执行提供异步选项?

对于亚洲/香港,使用ResolverStyle.STRICT的LocalDate.parse返回意外结果

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

如何让JavaFx应用程序识别依赖项?

将PNG转换为位图自定义十六进制字符串

如何在Java中为thunk创建映射器函数

根本不显示JavaFX阿拉伯字母

Java组件项目中的JavaFX对话框国际化

Java在操作多个属性和锁定锁对象时使用同步和易失性

如何使用jooq更新记录?