当前位置: 首页 > 知识库问答 >
问题:

放心地在对象数组中找到特定的键值对

唐烨煜
2023-03-14

我有一个类似这样的json响应:

"someArray": [
    {
       "someProperty":"someValue",
       // other properties that are not relevant for me
    },
    {
       "someProperty":"someOtherValue",
       // other properties that are not relevant for me
    }
]

我想检查,如果某个数组数组有一个对象,其属性名为“某个属性”,值为“某个值”,但如果它有另一个具有相同属性但不相同值的对象,则不要失败测试。

有可能吗?在此之前,我一直使用静态索引,因为我在该数组中只有一个元素。

共有2个答案

蒋星雨
2023-03-14

假设您使用的是Java 8或更高版本,您应该使用< code > arrays . stream(some array)然后使用< code>filter方法来选择您想要的元素。

我没有使用REST-assured,但根据他们的文档,看起来你应该能够使用下面这样的东西

@Test public void
lotto_resource_returns_200_with_expected_id_and_winners() {

    when().
            get("/lotto/{id}", 5).
    then().
            statusCode(200).
            body("someArray", hasItems(hasEntry("someProperty", "someValue")));

}

如果您可以在使用hasEntry之前放置某种反序列化逻辑将对象转换为映射,则可以使用此功能

另一种解决方案是使用findAllbody("someArray.findAll{o-

阙沛
2023-03-14

这是一个使用JsonPath的解决方案

List<String> values = RestAssured.when().get("/api")
    .then().extract().jsonPath()
    .getList("someArray.someProperty");

Assert.assertTrue(values.contains("someValue"));

将适用于以下响应JSON:

{  
   "someArray":[  
      {  
         "someProperty":"someValue"
      },
      {  
         "someProperty":"someOtherValue"
      }
   ]
}
 类似资料:
  • 问题内容: 我有以下JSON数组,我想创建对象表单状态键计数 要计算状态键值并创建以下对象 问题答案: 使用 方法 虽然可以使用 具有相同代码的方法。

  • JavaScript 是否有一个优雅的机制来确定“key1”是否存在? 换句话说,这是一种比遍历所有数组元素并检查每一个更好的机制。

  • 问题内容: Swift在Underscore.js中是否有类似_.findWhere的内容? 我有一个类型为struct的数组,想检查array是否包含属性等于的struct对象。 尝试使用,但它们仅适用于基本类型,例如或。引发有关不符合协议之类的错误。 问题答案: FWIW,如果您不想使用自定义功能或扩展名,则可以: 首先生成数组,然后从中生成数组。 如果阵列很大,则可能需要执行以下操作: 或许

  • 我在开快车。js应用程序,有几个API将数据提供给下拉框。返回的数据格式为: 其中key是我的选项key,value是显示文本。这个数组的结构是固定的,我知道一个事实,我总是将key和value作为数组中每个对象的字段。 当我尝试验证提交的表单(额外的服务器端验证)时,我想交叉引用为字段提供的值与数组中“key”的所有值(blah、foo、bar、baz)。鉴于这将是一个经常使用的路由,我想避免每

  • 问题内容: 假设您有一个非常简单的数据结构: …并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择: 如果您要存储(或希望可能拥有)多个“价值”部分(例如,增加他们的年龄等),显然第二或第三种选择是可行的,因此,为了论证,让我们假设在此结构中再也不需要任何数据值了。您选择哪一个,为什么? 编辑 :该示例现在显示最常见的情况:非顺序ID。 问题答案: 每个解决方案都有其用例。

  • 问题内容: 我知道以前也曾问过类似的问题,但是这个问题有些不同。我有一个未命名对象的数组,其中包含一个已命名对象的数组,我需要获取“名称”为“字符串1”的对象。这是一个示例数组。 更新: 我应该早先说过,但是一旦找到它,我想用一个编辑过的对象替换它。 问题答案: 您可以遍历数组并测试该属性: