как получить значения карты, возвращенной jsonPath (). getMap методы спокойной - PullRequest
0 голосов
/ 27 января 2020

как получить значения карты, возвращаемой jsonPath (). Спокойно, getMap методы Я уверен, что я пытаюсь получить ответ ниже API в Map, который я могу успешно получить, но когда я пытаюсь получить доступ к значению ключ "id" в приведенном ниже коде, я получаю Ошибка на линии "String id = test.get (" id ");"

public void testRestAssured() {
        Response apiResponse = RestAssured.given().get("https://reqres.in/api/user/2");
        Map<String, String> test = apiResponse.jsonPath().getMap("data");
        System.out.println(test);
        String id = test.get("id");
        System.out.println("ID : " + id);
}

Ошибка

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

Я пытался сделать много вещей, таких как

String id = test.get("id").toString();      
or
String id = String.valueOf(test.get("id"));

, но ничего не помогло в резолюции

api ответ выглядит следующим образом

{
    "data": {
        "id": 2,
        "name": "fuchsia rose",
        "year": 2001,
        "color": "#C74375",
        "pantone_value": "17-2031"
    }
}

Ответы [ 2 ]

1 голос
/ 27 января 2020

Попробуйте приведенный ниже код, он отлично работает для меня:

Response apiResponse = RestAssured.given().get("http://reqres.in/api/user/2");
Map<Object, Object> test = apiResponse.jsonPath().getMap("data");
System.out.println(test);
String id = test.get("id").toString();
System.out.println("ID : " + id);

Я сделал следующие изменения: изменил Map of (String, String) на Map (Object, Object), потому что мы знаем, что каждый ключ карты является строкой, но значение может быть любого типа данных.

Я надеюсь, что это решит вашу проблему.

0 голосов
/ 29 января 2020

Правильный код

    Response apiResponse = RestAssured.given().get("http://reqres.in/api/user/2");
    Map<Object, Object> test = apiResponse.jsonPath().getMap("data");
    System.out.println(test);

    for (Object e : test.keySet()) {
        System.out.println(" Key is " + e + "  , value is " + test.get(e));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...