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

放心:从响应列表中提取值

景远航
2023-03-14

我有一个列表作为响应返回。我需要从使用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。以下是我的方法。我拿到了卡。类元素的列表。然后,我需要从列表中获得具有指定“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);
  }

是否可以用Restastured来做这件事?也许像我的例子一样使用。param方法?但是在我的示例中。param方法被忽略。谢谢你的想法。

UPD.我的决定是:

 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();
  }

共有1个答案

周马鲁
2023-03-14

如果您需要从响应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")
 类似资料:
  • 我需要从从 Rest Assured 建模请求返回的 JSON 响应数据中获取两个值: 这抛出和 获取这些的正确、最好的方法是什么?我知道我可以链接关闭请求,但不确定如何获取

  • 我试图从JSON中提取值,并将其存储在String List中,因为稍后我需要检查我在csv文件中的值是否存在于此List中。 任何人都可以帮我建立一个路径来提取它吗? 现在我在我的控制台上得到了这个。**(它只返回了十个,因为我更改了“limit”参数。 我的代码直到现在: 下面您可以找到JSON结构,我只需要对象“标识符”数组中的所有“accountId”。

  • 我想从字符串类型的REST响应(json或xml)中提取值。我尝试了以下代码: 但是它包含了 根本原因是RestAssuredConfig对象在RestAssuredResseOptionsGroovyImpl中为空 那么,既然我已经有了字符串响应,那么在没有get()或post()的情况下,如何从原始字符串响应正确构造Response对象呢?

  • 假设我调用了一个RESTful服务,它在响应体中返回这个 我只需要得到映射键为' en '的值 所以我期望过滤后的结果会像这样 [“Reason1 英文翻译”、“Reason2 英文翻译”] 或 {"Reason1英文翻译","Reason2英文翻译"} 我已经尝试了下一个代码,但仍未完成 然后它返回 [{en=Reason1英文翻译,es=Reason2西班牙文翻译},{en=Reason2英文

  • 我最近开始测试一个新项目的API,放心吧。我的Java不是很流利,所以我需要知道如何优化代码。 假设我有一个API,它的输出是以下格式的JSON- 数组中大约有400个这样的对象。我想获取所有400条记录的,并存储在一个数组中。我可以这样做,但我认为该方法可以优化。 我目前的代码 : 如何最小化代码行以实现同样的事情?