Преобразовать список значений объекта в POJO
Привет у меня есть следующее возвращаемое значение из зависимости. Я пытаюсь преобразовать его в POJO, с которым я его представляю.
Структура возвращаемого типа:
DependencyAPIResult
- List<Attribute>
Каждый атрибут имеет следующее определение класса:
public class Attribute {
@NonNull private final AttributeKey key;
@NonNull private final AttributeValue value;
Getters
.
.
.
Setters
.
.
.
}
Я хочу сопоставить этот результат с POJO, представленным:
public class MyPOJO {
private pojoId;
private pojoName;
private pojoValue;
}
То, как я сейчас конвертирую результат в POJO, выглядит так:
String pojoId = null;
String pojoName = null;
String pojoValue = null;
for (Attribute attribute : result.getAttributes()) {
switch (attribute.getKey().getName()) {
case "pojoId"
id = attribute.getValue().getStringValue();
break;
case "pojoName":
name = attribute.getValue().getStringValue();
break;
case "pojoValue":
pojoValue = attribute.getValue().getStringValue();
break;
default:
break;
}
}
Есть ли метод / маппер или, возможно, лямбда-функция Java 8, которую я могу использовать, чтобы сделать это лучше? Спасибо!
1 ответ
Решение
Вы можете хранить их в Map
вместо использования for
с switch
:
Map<String, String> valuesByKeyName =
result.getAttributes().stream()
.collect(Collectors.toMap(k -> k.getKey().getName(),
v -> v.getValue().getStringValue()));
String id = valuesByKeyName.get("pojoId");
String name = valuesByKeyName.get("pojoName");
String pojoValue = valuesByKeyName.get("pojoValue");
Pojo pojo = new Pojo(id, name, pojoValue);