Будьте уверены: извлечение списка значений из Json Response с использованием Java - PullRequest
0 голосов
/ 12 января 2019

У меня есть JSON Response и я хочу извлечь список значений из ответа, например, для всех значений идентификатора.

{
"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 ]

0 голосов
/ 13 января 2019

Ниже кода найдет все идентификаторы, присутствующие в ответе, и напечатает результат как 4 5 6

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

    for(Integer i:ids)
    {

        System.out.println(i);
    }
0 голосов
/ 14 февраля 2019

Вы можете использовать подстановочные знаки JsonPath для извлечения данных из ответа, что избавит вас от написания кода каждый раз, когда у вас есть такое требование, используйте ниже JsonPath для извлечения списка идентификаторов из вашего ответа:

$..id
0 голосов
/ 12 января 2019

Это можно сделать, изменив путь к data.id

List<Integer> ids = res.jsonPath().getList("data.id");
Integer id = ids.get(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...