Получите все данные с помощью Rest Assured

Я использую будьте уверены, чтобы протестировать свой API, у меня есть список массивов, который содержит дату, которую мне нужно сравнить с ответом JSON, но я не могу получить все значения даты из ответа

ArrayList<String> jsonElement = response.path("result[0].data[0].record.date");

Я получаю записи только для первого объекта массива

Ниже мой ответ JSON

{
      "statusCode": 200,
      "result": [
        {
          "data": [
            {
              "record": [
                {
                  "date": "2016-09-07T00:00:00.000000Z"
                },
                {
                  "date": "2016-07-07T00:00:00.000000Z"
                },
                {
                  "date": "2016-07-21T00:00:00.000000Z"
                },
                {
                  "date": "2017-03-31T00:00:00.000000Z"
                },
                {
                  "date": "2017-01-30T00:00:00.000000Z"
                }
              ]
            },
            {
              "record": [
                {
                  "date": "2017-07-20T00:00:00.000000Z"
                },
                {
                  "date": "2017-08-07T00:00:00.000000Z"
                },
                {
                  "date": "2018-01-06T00:00:00.000000Z"
                }
              ]
            }
          ],
          "id": "34567890"
        }
      ]
    }

person Cod    schedule 11.06.2020    source источник
comment
Какую ошибку вы получаете?   -  person kaweesha    schedule 11.06.2020
comment
Я получаю запись только для первого узла   -  person Cod    schedule 11.06.2020
comment
@Cod - Ты пробовал?   -  person Wilfred Clement    schedule 13.06.2020


Ответы (1)


Я могу придумать разные способы сделать это, но, учитывая, что результат всегда будет 1, вот решение

    JsonPath js = new JsonPath(json);

    ArrayList<String> original = new ArrayList<String>();

    int count = js.getInt("result[0].data.size()");

    for (int i = 0; i < count; i++) {
        original.addAll(js.get("result[0].data[" + i + "].record.date"));
    }

    System.out.println("Dates : "+original);
    System.out.println("Count : "+original.size());
    System.out.println("Third Date : "+original.get(2));

Вывод:

Dates : [2016-09-07T00:00:00.000000Z, 2016-07-07T00:00:00.000000Z, 2016-07-21T00:00:00.000000Z, 2017-03-31T00:00:00.000000Z, 2017-01-30T00:00:00.000000Z, 2017-07-20T00:00:00.000000Z, 2017-08-07T00:00:00.000000Z, 2018-01-06T00:00:00.000000Z]
Count : 8
Third Date : 2016-07-21T00:00:00.000000Z
person Wilfred Clement    schedule 11.06.2020