【问题标题】:How do I extract results with special conditions using restAssured?如何使用 restAssured 提取具有特殊条件的结果?
【发布时间】:2021-07-26 20:12:02
【问题描述】:

我有一个作为响应返回的列表。我需要得到一个人的名字少于开头 5

{
   "person": {
    "list": [
        {
          "id":A135443
          "name":"Jeff"
          "start":5
        },
        {
          "id":A135410
          "name":"JohnDoe"
          "start":5
        },
        {
          "id":A135418
          "name":"Adam"
          "start":4
        },
        {
          "id":A135431
          "name":"Harry"
          "start":3
        },
         ....
   ]}}

在上述代码中,小于 5 start 的“Adam”和“Harry”应存储在数组中。

如何将满足特定条件的结果存储在数组中?

【问题讨论】:

  • 最简单的选择可能是只提取整个列表,然后过滤或选择之后的元素。

标签: java rest-assured rest


【解决方案1】:

有很多方法可以做到这一点,这里有几个例子很容易解释 - 让我知道,我很乐意解释

选项 1:

Response res = RestAssured.given().when().get("http://localhost:8080/trial/1");
JsonPath js = res.jsonPath();
List<Object> values = js.getList("person.list.findAll { it.start < 5 }.name");

选项 2:

List<Object> values1 = RestAssured.given().when().get("http://soapractice.mocklab.io/thing/4").then().extract()
.body().jsonPath().getList("person.list.findAll { it.start < 5 }.name");

选项 3:

String def = RestAssured.given().when().get("http://soapractice.mocklab.io/thing/4").then().extract().body().asString();
JsonPath js1 = new JsonPath(def);
List<Object> values2 = js1.getList("person.list.findAll { it.start < 5 }.name");

官方文档很有用-Link

【讨论】:

  • IMO,保存到List&lt;String&gt; var 以备将来使用优于List&lt;Object&gt;
  • 完美运行!你是安心之神
  • @lucasnguyen17 我更喜欢将数据类型的选择留给 OP,这更像是一个通用的答案
  • { "person": { "list": [ { "id":A135443 "name":"Jeff" "start":5 }, { "id":A135410 "name":"JohnDoe" "start":5 }, { "id":A135418 "name":"Adam" "start":4 }, { "id":A135431 "name":"Harry" "start":3 }, .... ], "cnt": 10 }} 我试过你向我解释的方式。我有 person.list.name 数据,但我没有 person.cnt 数据。我该怎么办?
  • @Holland 请编辑相同的问题或提出新问题,很难遵循 cmets 的要求
猜你喜欢
  • 2011-05-02
  • 2016-12-12
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 2023-03-26
  • 2011-06-10
相关资源
最近更新 更多