java - 放心 : extract value from Response List

标签 java rest-assured

我有一个列表作为响应返回。我需要使用 product.name 和 tariffPlan.name 从列表中获取一项。

    [
  {
    "id": 123,
    "product": {
      "id": 1,
      "code": "credit",
      "name": "Credit"
    },
    "tariffPlan": {
      "id": 1,
      "code": "gold",
      "name": "Gold"
    }
  },
  {
    "id": 234,
    "product": {
      "id": 2,
      "code": "debit",
      "name": "Debit"
    },
    "tariffPlan": {
      "id": 1,
      "code": "gold",
      "name": "Gold"
    }
  }
]

我使用 Java8。这是我的方法。我得到了 Card.class 元素列表。然后我需要从具有指定“product.name”和“tariffPlan.name”的列表中获取单个项目。

public List<Card> getCardId(String productName, String tariffPlanName) {
    return given()
        .param("product.name", productName)
        .param("tariffPlan.name", tariffPlanName)
        .when().get("/").then()
        .extract().jsonPath().getList("", Card.class);
  }

是否可以使用 restAssured 来做到这一点?也许像我的例子一样使用 .param 方法?但在我的示例中,.param 方法被忽略了。谢谢你的想法。

更新。我的决定是:

 public Card getCard(String productName, String tariffPlanName) {
    List<Card> cardList = given()
        .when().get("/").then()
        .extract().jsonPath().getList("", Card.class);

    return cardList.stream()
        .filter(card -> card.product.name.equals(productName))
        .filter(card -> card.tariffPlan.name.equals(tariffPlanName))
        .findFirst()
        .get();
  }

最佳答案

如果您需要从响应 json 列表中获取值,这对我有用:

Json sample:
[
  {
    "first": "one",
    "second": "two",
    "third": "three"
  }
]

Code:

String first =
given
  .contentType(ContentType.JSON)
.when()
  .get("url")
.then()
.extract().response().body().path("[0].first")

关于java - 放心 : extract value from Response List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416987/

相关文章:

java - 如何将数组添加到 okhttp 正文(POST)

java - Java虚拟机是机器依赖的吗?

java - 将序列化的 HTML 时间字段转换为 java.time.LocalTime

rest-assured - 如何放心提取请求的URL?

java - 如何使用 "assertThat().body("email", is(email)); 来验证某些响应?

java - 一个 servlet 应该执行多少个 Action ?

java - Play Framework 和 DB2

java - REST Assured - 通用列表反序列化

java - 使用文件名中包含西里尔字符的多部分文件进行放心的 POST 调用

java - POST请求失败(放心测试)