Получить все записи из ответа JSON - PullRequest
0 голосов
/ 04 мая 2018

Я все еще новичок в мире Rest Assured API. Я прочитал столько документации по https://github.com/rest-assured/rest-assured/wiki/Usage#example-3---complex-parsing-and-validation, сколько я могу вынести.

У меня есть ответ, который выглядит следующим образом:

{
  "StatusCode": 200,
  "Result": [
    {
      "EmployeeId": "5661631",
      "PhoneTypeDescription": "Home",
      "PhoneNumber": "9701234567",

    },
    {
      "EmployeeId": "5661631",
      "PhoneTypeDescription": "mobile1",
      "PhoneNumber": "2531234567",

    },
    {
      "EmployeeId": "5661631",
      "PhoneTypeDescription": "mobile2",
      "PhoneNumber": "8081234567",
    }
  ]
}

Я боролся с тем, как получить PhoneNumber только для первой записи.

String responseBody= 
                given()
                    .relaxedHTTPSValidation().contentType("application/json")
                    .param("api_key", api_key).
                when()
                    .get("/api/employees/" + employeeId)
                    .andReturn().asString();

    JsonPath jsonPath = new JsonPath(responseBody).setRoot("Result");
    phoneNumber = jsonPath.getString("PhoneNumber");

Я получаю все номера телефонов в этом случае: phoneNumber = "[9701234567,2531234567,8081234567]"

Как я могу получить только первую запись? Я бы предпочел не выполнять строковые операции, чтобы иметь дело с "[".

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Поскольку вы знаете индекс элемента, который хотите получить, вы можете использовать следующий код:

JsonPath jsonPath = new JsonPath(response);
String phoneNumber = jsonPath.getString("Result[0].PhoneNumber");
0 голосов
/ 04 мая 2018

Вы можете просто сделать,

JSONObject json = new JSONObject(responseBody);
phoneNumber = json.getJSONArray("Result").getJSONObject(0).getString("PhoneNumber");

Здесь 0 обозначает первую запись в массиве JSON Result.

...