Получить размер или длину ответа массива json (интерфейс restAssured Response)

У нас есть сценарии автоматизации REST API с использованием RestAssured. В этом объекте ответа объявлен как public static Response response; и при извлечении данных ответа с помощью response.jsonPath().get("id"), при этом пытается даже получить размер или длину идентификатора, даже необходимо получить подробную информацию о массиве тегов.

Ответ JSON:

   [
  {
    "id": 1,
    "name": "test1",
    "tags": [
      {
        "tagType": "details1",
        "tag": {
          "description": null
        }
      }
    ]
  },
  {
    "id": 2,
    "name": "test2",
    "tags": [
      {
        "tagType": "details2",
        "tag": {
          "description": null
        }
      }
    ]
  }
]

Пробовал следующие способы:

public static Response response;

List<String> resIDs = response.jsonPath().get("id");

System.err.println("Retrieved IDs from Response: " + resIDs);

O/P: is [1,2,3,4,5,6,7]

Tried as resIDs.size(), that also no response printed.

List<Object> size = response.jsonPath().getList("$");

System.err.println("ArraySize for IDs from Response: " + size);

or

int size = response.jsonPath().getList("$").size();

O/P: Not printed/nothing shown

Пожалуйста, расскажите, как получить размер / длину.


person la1    schedule 26.06.2020    source источник
comment
так что вам просто нужен вывод как 7?   -  person Wilfred Clement    schedule 26.06.2020
comment
Спасибо за ответ и расширенную помощь, да, также хочу получить подробную информацию о размерах тегов, которые являются вложенным массивом.   -  person la1    schedule 26.06.2020
comment
resIDs.size() возвращает мне правильный счет   -  person Wilfred Clement    schedule 26.06.2020
comment
Я до сих пор не могу понять, вот способ: List ‹String› resIDs = response.jsonPath (). Get (id); System.err.println (размер массива для идентификаторов из ответа: + resIDs.size ());   -  person la1    schedule 26.06.2020
comment
Именно так и должно быть. Посмотрите на мой результат здесь   -  person Wilfred Clement    schedule 26.06.2020
comment
Спасибо за быстрый ответ. У меня есть код для ответа: response = RESTServiceBase.postCallWithJsonBodyParam (jsonObject.toString (), url_endPoint); Метод postCallWithJsonBodyParam: общедоступный статический ответ postCallWithJsonBodyParam (String jsonObject, String URL) {LoggerUtil.log (вызов POST на конечной точке + URL + с параметром строки JSON + jsonObject); вернуть данный (). RelaxedHTTPSValidation (). contentType (getContentType ()). request (). body (jsonObject) .when (). post (URL); }; И с построением вышеуказанного ответа: List ‹String› resIDs = response.jsonPath (). Get (id);   -  person la1    schedule 26.06.2020


Ответы (1)


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

public class S_62591968 {

    public static Response postCallWithJsonBodyParam(String URL) {
        return RestAssured.given().relaxedHTTPSValidation().contentType(ContentType.JSON).request().when().get(URL);
    }

    public static void main(String[] args) {

        String url_endPoint = "http://localhost:8089/def/abc";
        Response response = postCallWithJsonBodyParam(url_endPoint);

        List<String> resIDs = response.jsonPath().get("id");
        System.out.println("Retrieved IDs from Response : " + resIDs);
        System.out.println("ArraySize for IDs from Response : " + resIDs.size());
    }
}

Консоль :

Retrieved IDs from Response : [1, 2]
ArraySize for IDs from Response : 2
person Wilfred Clement    schedule 26.06.2020