Как извлечь ответ об отдыхе, у которого нет «имени» - PullRequest
0 голосов
/ 21 февраля 2020

Как извлечь объект в теле ответа, у которого нет имени?

пример полезной нагрузки:

[
    "0UOIP8AB45B138752172",
    "16GW0K3I6SX162376934",
    "16JMPMJWB1P111816144",
    "1ATU22DNPF2115778748",
    "1MD7WEAY3VX166052653",
    "2G8ITN9TM04162374892",
    "2GJR1LBMCZJ187945453",
    "2RK7A3YGTAA105827565",
    "2SZ04KI5NYO185742410",
    "2ZPHJYIDHOL193996774"
]

Фрагмент RestAssured.

        RequestSpecification requestSpecification = new RequestSpecBuilder()
                .setBaseUri(domain).build();
        return given()
                .spec(requestSpecification).log().all()
                .contentType(APPLICATION_JSON)
                .header(X_AUTH_TOKEN, token)
                .get(path).then()
                .assertThat().statusCode(201).log().ifError()
                .extract().path(); // what do I write here?

1 Ответ

1 голос
/ 21 февраля 2020

Полезная нагрузка, которую вы разместили, неверна json. Однако, предполагая, что это вы JSON

[ "0UOIP8AB45B138752172",
  "16GW0K3I6SX162376934",
  "16JMPMJWB1P111816144",
  "1ATU22DNPF2115778748",
  "1MD7WEAY3VX166052653",
  "2G8ITN9TM04162374892",
  "2GJR1LBMCZJ187945453",
  "2RK7A3YGTAA105827565",
  "2SZ04KI5NYO185742410",
  "2ZPHJYIDHOL193996774"
]

Вы не можете использовать метод path, поскольку у вас нет пути к нему. Однако вы можете извлечь эти данные JSON как данные массива String.

String[] jsonData = given()
            .spec(requestSpecification).log().all()
            .contentType(APPLICATION_JSON)
            .header(X_AUTH_TOKEN, token)
            .post(path).then()
            .assertThat().statusCode(201).log().ifError()
            .extract().as(String[].class);
//Add any assertions on the length of the array.
return jsonData[position];                     // Assuming position is the index of the String value to be retrieved.

Здесь вы действительно должны знать позицию значения, которое вы хотите извлечь из данных массива JSON.

...