Вместо получения корневого уровня, подобного следующему:
List<String> jresponse = response.jsonPath().getList("$");
Вы можете получить идентификаторы напрямую:
List<String> ids = path.getList("id");
Затем вы можете использовать цикл foreach вместо использования индексов, подобных этому:
List<String> ids = path.getList("id");
for (String id : ids) {
if (id.equals("1")) {
//do something
} else {
//do something else
}
}
РЕДАКТИРОВАТЬ:
Лучший способ (вероятно) заключается в создании объектов, представляющих JSON.Чтобы сделать это, мы должны понять, что содержит JSON.Пока у вас есть JSON Array, который содержит объекты JSON.Каждый из объектов JSON содержит id
и applicationId
.Чтобы разобрать этот JSON в класс Java, мы должны создать класс.Давайте назовем это Identity
.Вы можете называть это как хотите.
public class Identity {
public String id;
public String applicationId;
}
Выше представлено представление объекта JSON.Имена полей являются точными именами в JSON.Идентификаторы должны быть открытыми.
Теперь, чтобы разобрать JSON в классы Java, мы можем использовать JsonPath
следующим образом:
Identity[] identities = path.getObject("$", Identity[].class);
Затем мы перебираем массив, чтобы получить то, что нам нужно:
for (Identity identity : identities) {
if (identity.id.equals("1")) {
System.out.println(identity.applicationId);
}
}
Исходя из этого, вы можете создать полный метод вместо простой печати applicationId
следующим образом:
private static String getApplicationId(String id, Identity[] identities) {
for (Identity identity : identities) {
if (identity.id.equals(id)) {
return identity.applicationId;
}
}
throw new NoSuchElementException("Cannot find applicationId for id: " + id);
}
ДРУГОЕ РЕДАКТИРОВАНИЕ:
Чтобы использовать foreach
и получить applicationID
на основе id
, вам нужно использовать метод getList
, но другим способом.
List<HashMap<String, String>> responseMap = response.jsonPath().getList("$");
В приведенном выше коде мы получаемсписок объектов JSON в массиве JSON.
Каждый из элементов в HashMap представляет собой один объект JSON.Строки - это такие атрибуты, как id
и applicationId
, а секунда String
- значения каждого атрибута.
Теперь мы можем использовать цикл foreach
, чтобы получить желаемые результаты:
private static String getApplicationIdBasedOnId(Response response, String id) {
List<HashMap<String, String>> responseMap = response.jsonPath().getList("$");
for (HashMap<String, String> singleObject : responseMap) {
if (singleObject.get("id").equals(id)) {
return singleObject.get("applicationId");
}
}
throw new NoSuchElementException("Cannot find applicationId for id: " + id);
}