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

Rest保证:使用java从Json响应中提取值列表

微生啸
2023-03-14

我有一个JSON响应,希望从响应中提取值列表,例如id的所有值。

{
"page": 2,
"per_page": 3,
"total": 12,
"total_pages": 4,
"data": [
    {
        "id": 4,
        "first_name": "Eve",
        "last_name": "Holt",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"
    },
    {
        "id": 5,
        "first_name": "Charles",
        "last_name": "Morris",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg"
    },
    {
        "id": 6,
        "first_name": "Tracey",
        "last_name": "Ramos",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg"
    }
]
}

我已经尝试了下面的代码,但无法实现,但它只是打印id的第一个值,即4。

public class Get_Request {

public static void main(String[] args) {

    RestAssured.baseURI = "https://reqres.in/";

    Response res  = given()
      .param("page", "2")
    .when()
      .get("/api/users")
    .then()
      .assertThat()
      .contentType(ContentType.JSON)
      .and()
      .statusCode(200).extract().response();

    /*String data = res.jsonPath().getString("data[0].first_name");

    System.out.println(data);
    */

    List<HashMap<String,Object>> allids = res.jsonPath().getList("data");


    HashMap<String,Object> firstid = allids.get(0);

    Object a =  firstid.get("id");

    System.out.println(a);


    }
}

我是初学者,我也不确定我们是否能达到同样的效果。任何帮助都将不胜感激。提前谢谢。

共有3个答案

松钊
2023-03-14

您可以使用JsonPath通配符从响应中提取数据,这将节省您在每次有此类需求时编写代码的时间。请使用下面的JsonPath从响应中提取ID列表:

$..id
李康安
2023-03-14

这可以通过更改数据路径来实现。身份证件

List<Integer> ids = res.jsonPath().getList("data.id");
Integer id = ids.get(0);
梁渊
2023-03-14

下面的代码将找到响应中存在的所有id,并将打印结果,如4 5 6

List<Integer> ids = res.jsonPath().getList("data.id");

    for(Integer i:ids)
    {

        System.out.println(i);
    }
 类似资料:
  • 我目前正在使用rest和Json-Unit对请求的rest响应断言本地json文件。 我目前有一个前类方法与我的基本uri. 我不知道该如何断言。我正在努力处理json单元文档。我需要先输入一个文件吗?

  • 我有一个关于Rest保证的问题。-https://code.google.com/p/rest-assured/wiki/Usage 我知道我可以使用REST保证进行HTTP调用(. get. put等)。)并使用时()等验证响应。我想验证我已经保存在数据库中的JSON响应,而不是实时调用Web服务并验证它的响应。 我可以使用REST-保证加载JSON响应作为字符串并验证它吗?

  • 我有一个来自web服务的JSON响应,看起来像这样: 我需要做的是使用JSONPATH查询从所有实体中提取主题。 如何获得这些结果: 来自第一项的主题-某个SubjectOne 过滤来自所有实体的特定主题值(例如某个主题2) 从所有实体获取对象

  • 我有一个列表作为响应返回。我需要从使用product.name和tariffplan.name的列表中获得一个项目。 我使用Java8。以下是我的方法。我拿到了卡。类元素的列表。然后,我需要从列表中获得具有指定“product.name”和“tariffplan.name”的单个项目。 是否可以用Restastured来做这件事?也许像我的例子一样使用。param方法?但是在我的示例中。param

  • 问题内容: 首先,我将自由地让自己成为一个笨拙的文科专家,他完全可以自学此脚本。就是说,我正在尝试使用以下代码从USGS水数据服务获取值: 尽管我找到了一些有关如何从JSON响应中提取所需值的教程,但大多数教程都非常简单。我遇到的困难是从该服务返回的看起来非常复杂的响应中提取出来的。查看响应,我可以看到我想要的是来自两个不同部分的值和一个时间值。因此,我可以查看响应并查看所需的内容,但我一生无法解